2

我们正在尝试将.NET 3.5解决方案迁移到.Net 4.0中,但遇到可以使用使用4.0版本的构建程序集运行的测试框架的复杂问题。 .Net框架。.Net 4.0下的单元测试和测试运行程序问题

此前,我们在我们的NAnt脚本中使用了NUnit 2.4.3.0和NCover 1.5.8.0,但NUnit 2.4.3.0不喜欢.Net 4.0项目。因此,我们在测试项目本身内升级到NUnit框架的新版本,但后来发现NCover 1.5.8.0不支持此版本的NUnit。

我们在代码中发现错误,说明使用.Net框架的新版本构建的程序集的效果超过了当前使用的版本,因为它使用.Net Framework 2.0来运行这些工具。

然后,我们尝试使用Gallio的Icarus测试运行器GUI,但发现这和MbUnit仅支持.NET Frameword的3.5版本,结果是“测试将被忽略”。我们发现PartCover是取代NCover的一个很好的选择,(因为NCover的新版本非常值得关注,PartCover是免费),但这只是一小步,因为我们无法让测试运动员先工作!

能否像我上面所描述的那样,在一个以.Net 4.0运行的测试框架上揭示什么?如果没有,我担心我们可能不得不恢复使用.Net 3.5,直到我们目前使用的工具制造商有机会升级到.Net 4.0。

谢谢。

回答

0

正确 - 自己解决这个问题。这是如何,以防其他人有相同的问题。

NUnit 2.5.5 is now out,这支持项目建设使用.NET Framework 4.0版,但你必须使用额外的参数,即/framework=4.0.30319,在恶性使用时看起来像这样,通过NCover:

<exec program="C:\Program Files\TestDriven.NET 2.0\NCover\1.5.8\NCover.Console.exe"> 
<arg value="&quot;C:\Program Files\NUnit 2.5.5\bin\net-2.0\nunit-console.exe&quot;"/> 
<arg value="&quot;bin/release/myProject.Test.dll&quot; /framework=4.0.30319"/> 
<arg value="/xml"/> 
<arg value="bin/release/myProject.Test-dll-results.xml"/> 
<arg value="//x"/> 
<arg value="bin/release/myProject.Test-dll-coverage-results.xml"/> 
<arg value="//q"/> 
<arg value="//a"/> 
<arg value="myProject.Test"/> 
</exec> 

由于只有升级到NUnit的2.5.5(以及与增加此标志)这个现在用很少的变化构建脚本,这是很好的工作。

因此,简言之:

我的恶性脚本调用出来NCover 1.5.8和调用NUnit的2.5.5哪些测试我的单元测试组件的.dll使用.NET 4.0构建的。 NUnit生成第一个输出文件(bin/release/myProject.Test-dll-results.xml),然后由NCover提取并输出到第二个输出结果文件(bin/release/myProject.Test-dll-coverage -results.xml),然后它可以简单地包含在Cruise Control的ccnet.config文件中,以便在每次构建之后自动包含在webdashboard中。

简单。希望它可以帮助别人!