2

我们正在尝试将 .Net 3.5 解决方案迁移到 .Net 4.0 中,但遇到了可以使用使用 .Net Framework 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 Framework 构建的,因为它使用 .Net Framework 2.0 来运行这些工具。

然后我们尝试使用 Gallio 的 Icarus 测试运行程序 GUI,但发现这和 MbUnit 仅支持 .Net Frameword 的 3.5 版本,结果是“测试将被忽略”。

就事物的覆盖面而言(用于向 CruiseControl.net 报告),我们发现 PartCover 是替代 NCover 的一个很好的候选者,(因为新版本的 NCover 非常昂贵,而且 PartCover 是免费的),但是这还只是几步之遥,因为我们无法让测试运行者先工作!!

任何人都可以以与我上面描述的相同方式在 .Net 4.0 下运行的测试框架有所了解吗?如果没有,我担心我们可能不得不重新使用 .Net 3.5,直到我们当前使用的工具制造商有机会升级到 .Net 4.0。

谢谢。

4

1 回答 1

0

对 - 我自己已经解决了这个问题。以下是方法,以防其他人遇到同样的问题。

NUnit 2.5.5 现已推出,它支持使用 .Net Framework v4.0 构建项目,但您必须使用附加参数,即/framework=4.0.30319,在 NAnt 中通过 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(以及添加此标志),现在只需对构建脚本进行很少的更改即可工作,这很好。

所以,总结一下:

我的 NAnt 脚本调用 NCover 1.5.8 并调用 NUnit 2.5.5 来测试我使用 .Net 4.0 构建的单元测试程序集 .dll。NUnit 生成第一个输出文件 (bin/release/myProject.Test-dll-results.xml),然后由 NCover 拾取并处理成第二个输出结果文件 (bin/release/myProject.Test-dll-coverage -results.xml),然后可以简单地将其包含到 Cruise Control 的 ccnet.config 文件中,因为它会在每次构建后自动包含在 webdashboard 中。

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

于 2010-06-23T13:42:02.403 回答