我最近在我们的构建服务器上安装了MbUnit版本2.4.2.355,该服务器通过安装了.NET Framework 3.5 SP1的Windows Server 2003计算机上的Cruise Control.NET和NAnt运行。
我已经检查了构建脚本的每个角落,并且CC.NET上的NAnt输出报告告诉我测试项目构建正常。
这是NAnt脚本:
<target name="compiletests" description="Compiles unit tests separately">
<exec program="${netframework.dir}\msbuild.exe">
<arg line="C:\dev\PROJ3.1\trunk\src\PROJ\Customer\CustomerUnitTests\Company.CustomerUnitTests.csproj /t:Rebuild /p:Configuration=Debug"></arg>
</exec>
</target>
输出是ff:
[exec] Company.CustomerUnitTests - &gt; C:\ dev的\ PROJ.1 \行李箱的\ src \ PROJ \用户\ CustomerUnitTests \ BIN \调试\ Company.CustomerUnitTests.dll [exec]完成建筑项目 “C:\ dev的\ PROJ.1 \行李箱的\ src \ PROJ \用户\ CustomerUnitTests \ Company.CustomerUnitTests.csproj” (重建目标)。 [exec] Build 成功了。 [执行] “C:\ dev的\ PROJ3.1 \行李箱的\ src \ PROJ \用户\ CustomerUnitTests \ Company.CustomerUnitTests.csproj” (重建目标)(1) - &gt;
这意味着单元测试组件的构建成功。
事情是,在NAnt输出结束时是:
mbunit-tests:[mbunit] MbUnit 2.4.2.355测试运行器[mbunit]测试中未找到测试组件
我已经使用了控制台并尝试使用MbUnit.Cons.Exe来手动测试已编译的程序集。结果是这样的:
我现在想知道:测试装配和非测试装配有什么区别?我确定它与Test
和TestFixture
属性有关,但在我的情况下,为什么在WinXP机器中编译的程序集被编译为测试,而编译Win2K3机器的程序集无法识别?
希望有人对此有所了解。
答案 0 :(得分:4)
首先检查this issue 如果这没有帮助,您需要检查目标平台(项目属性,构建)为“任何CPU”。在此之后尝试打开使用Reflector在构建机器上生成的程序集。可能生成的文件已损坏。您也可以尝试使用VS手动构建项目并在MbUnit中加载生成的测试。
答案 1 :(得分:2)
关于任何特定组件是否被视为测试组件,没有根本区别。
我的猜测是你的开发机器运行的MbUnit构建方式与构建服务器略有不同。 MbUnit v2具有跨版本兼容性问题,可能导致它无法正确识别测试(因为它尝试加载框架组件的不同版本而不是安装)。
顺便说一句,这些问题在MbUnit v3中已基本解决。
如果您还没有这样做,您可能会发现在源代码树中安装MbUnit副本会很有帮助。这将确保始终在任何地方使用一致的版本。