如何为代码调用的自定义NUnit测试运行器指定测试超时?
NUnit 测试执行超时控制问题
通过代码调用NUnit引擎运行单元测试时,部分测试可能进入无限运行状态,NUnit会持续等待所有测试执行完成,最终导致整个测试会话始终无法正常终止。
当前使用的测试执行代码如下:
// 获取测试引擎接口 Engine.ITestEngine engine = Engine.TestEngineActivator.CreateInstance(); // 创建简易测试包:仅指定测试程序集路径,无特殊配置项 Engine.TestPackage package = new Engine.TestPackage(_testProjectAssemblyPath); // 获取对应测试包的执行运行器 var runner = engine.GetRunner(package); XmlNode testSessionResult = runner.Run(listener: new Listener1(), Engine.TestFilter.Empty);
现在希望实现的目标是:不依赖测试方法上的Timeout NUnit特性,为所有测试执行设置全局超时阈值,想确认可行的实现方式:
- 通过配置
.runsettings文件定义全局超时规则 - 借助NUnit引擎提供的
ISettings接口传入超时参数
此前曾尝试通过外层包裹带超时限制的任务来解决测试无限挂起的问题,但这种方式会导致无法正常获取失败测试的详细信息,而完整的失败测试详情是当前使用场景下的硬性要求。
内容的提问来源于stack exchange,提问作者Timon Post
相关产品推荐
相关产品推荐

