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

Jan*_*kan 2 .net c# wpf integration-testing nunit

我想在我的 WPF 解决方案中为视图模型编写一些集成测试,其中线程的主体是全局设置的 AppDomain.CurrentDomain.SetThreadPrincipal(principal);

NUnit 不提供从测试代码执行相同操作的机制,例如:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
AppDomain.CurrentDomain.SetThreadPrincipal(myCustomPrincipalInstance);
Run Code Online (Sandbox Code Playgroud)

可以通过 NUnit 的“设置对话框”来完成此操作,但这不是我需要的(有关此解决方案的更多信息,请参见测试加载器设置 - 高级/主体策略

有没有一种方法可以使用全局设置的主体来运行测试,以便测试中的代码堆栈中的所有线程都可以使用它?是否有一个 NUnit 插件可以提供此类功能,或者是否有一种方法可以使用新的 AppDomain 运行测试,我可以为其设置自定义主体(我将如何做到这一点)?

我尝试对 MsTest 执行类似的操作,其中PrincipalPolicy.WindowsPrincipal默认设置是,但我也无法将线程主体设置为 AppDomain。

Anž*_*nik 5

NUnit 中有一个叫做TestExecutionContext的东西。您应该能够通过调用以下命令来实现所需的结果:

TestExecutionContext.CurrentContext.CurrentPrincipal = customPrincipal;
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你。