使用全局线程主体设置运行NUnit测试

时间:2014-11-20 18:10:36

标签: c# .net wpf nunit integration-testing

我想在我的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。

1 个答案:

答案 0 :(得分:4)

NUnit中有一个名为TestExecutionContext的东西。您应该可以通过调用:

来获得所需的结果
TestExecutionContext.CurrentContext.CurrentPrincipal = customPrincipal;

为什么在网络上这么难以找到,我不知道,但除非你知道它,否则需要一段时间才能找到它:-)。

希望它有所帮助。