CC.Net Build Server - 如何找到根本没有完成的NUnit测试?

时间:2011-12-13 09:02:37

标签: nunit cruisecontrol.net

我有一个约1500个测试的测试套件,它们通常在“合理的时间”内运行并完成。

但是,最近,我已经更改了部分代码以使用线程 - 现在我的构建通过简单的超时而不时失败。我想,一个线程拒绝死亡,构建一直等到达到最大构建时间。

我的问题是如何检测导致问题的测试?

我可以激活一些记录,告诉我测试已经开始/已完成吗?我当然可以通过在每个单独的测试方法中插入代码来完成 - 或者只是在灯具中插入代码,但这是很多我宁愿避免的工作。

1 个答案:

答案 0 :(得分:2)

我建议升级到NUnit 2.5并使用Timeout属性修改测试,指定每次测试的最大运行时间。例如,您可以将其放在AssemblyInfo.cs

[assembly: NUnit.Framework.Timeout(100)] 

NUnit现在将在一个单独的线程中启动每个测试,并在超过其时间段时取消它。但是,这可能代价很高,因此最好确定长时间运行的测试,然后删除汇编级属性,以支持测试夹具时隙。您也可以在单个测试中覆盖它,为它们分配更多的时间来运行。

这样,您可以将超时/挂起检测从CruiseControl.Net移动到NUnit,并在报告中获取有关未正确完成的任务的信息。不幸的是,当CC.Net由于超时而必须终止该过程时,它无法获取此信息。