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

本文关键字:运行 NUnit 测试 主体 线程 全局设置 | 更新日期: 2023-09-27 18:31:11

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

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

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
AppDomain.CurrentDomain.SetThreadPrincipal(myCustomPrincipalInstance);

可以通过 NUnit 的"设置对话框"执行此操作,但这不是我需要的(有关此解决方案的更多信息,请参阅测试加载程序设置 - 高级/主体策略。

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

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

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

NUnit 中有这样的东西叫做 TestExecutionContext。您应该能够通过调用以下命令来达到预期的结果:

TestExecutionContext.CurrentContext.CurrentPrincipal = customPrincipal;
为什么在网上很难找到它,我不知道,

但除非你知道它在那里,否则需要一段时间才能找到它:-)。

希望对您有所帮助。