2011-12-13 53 views
2

我有一套~1500测试的测试套件,它们通常在'合理的时间内'运行并完成。CC.Net构建服务器 - 如何找到完全没有完成的NUnit测试?

但是,最近我改变了部分代码来使用线程 - 现在我的构建通过简单超时而不时失效。我想象一个线程拒绝死亡,并且构建等待,直到达到最大构建时间。

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

我可以激活一些记录,显示测试已经开始/完成吗?我当然可以通过在每一种测试方法中插入代码来完成 - 或者只是固定装置,但这是我宁愿避免的很多工作。

回答

2

我建议升级到NUnit 2.5并使用Timeout属性装饰您的测试,指定每个测试运行时间的最大值。例如,你可以把这个在您的AssemblyInfo.cs

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

NUnit现在将在一个单独的线程推出的每项测试,如果超过它的时间cancell它。但是,这可能代价高昂,因此最好能够确定长时间运行的测试,然后移除汇编级属性,以利用测试夹具时隙。您也可以在个别测试中覆盖此项,为他们分配更多时间运行。

通过这种方式,您可以将CruiseControl.Net中的超时/挂起检测移动到NUnit,并获取报告中关于未正确完成的任务的信息。不幸的是,当CC.Net由于超时而不得不杀死进程时,无法获取这些信息。

+0

太棒了;甚至比我所希望的更好! 谢谢! –