我想在我的WPF解决方案中为视图模型编写一些集成测试,其中线程的主体是全局设置的
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
NUnit不提供从测试代码执行相同操作的机制,例如:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
AppDomain.CurrentDomain.SetThreadPrincipal(myCustomPrincipalInstance);
可以通过NUnit的“设置对话框”来实现,但这不是我需要的(更多关于Test Loader Settings - Advanced / Principal Policy下的此解决方案。
有没有办法运行全局设置主体的测试,以便它可以被测试的代码堆栈中的所有线程使用?是否有可以提供此类功能的NUnit插件,或者是否有办法使用新的AppDomain运行测试,我可以设置自定义主体(我该怎么做)?
我尝试使用MsTest做类似的事情,其中PrincipalPolicy.WindowsPrincipal
是默认设置,但我也无法将线程主体设置为AppDomain。
答案 0 :(得分:4)
NUnit中有一个名为TestExecutionContext的东西。您应该可以通过调用:
来获得所需的结果TestExecutionContext.CurrentContext.CurrentPrincipal = customPrincipal;
为什么在网络上这么难以找到,我不知道,但除非你知道它,否则需要一段时间才能找到它:-)。
希望它有所帮助。