MbUnit无法识别在Windows Server 2003上使用MSBuild编译的测试程序集

时间:2009-02-09 13:14:31

标签: msbuild cruisecontrol.net windows-server-2003 mbunit

我最近在我们的构建服务器上安装了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来手动测试已编译的程序集。结果是这样的:

  • 使用我的Windows XP SP3计算机构建的测试程序集已得到正确识别,测试正在我的计算机上以及任何其他开发计算机上正常运行。
  • 在运行Windows Server 2003的构建服务器中构建的测试程序集未被识别为测试程序集;我尝试将这些文件复制到我的XP机器中,但也无法识别它们。

我现在想知道:测试装配和非测试装配有什么区别?我确定它与TestTestFixture属性有关,但在我的情况下,为什么在WinXP机器中编译的程序集被编译为测试,而编译Win2K3机器的程序集无法识别?

希望有人对此有所了解。

2 个答案:

答案 0 :(得分:4)

首先检查this issue 如果这没有帮助,您需要检查目标平台(项目属性,构建)为“任何CPU”。在此之后尝试打开使用Reflector在构建机器上生成的程序集。可能生成的文件已损坏。您也可以尝试使用VS手动构建项目并在MbUnit中加载生成的测试。

答案 1 :(得分:2)

关于任何特定组件是否被视为测试组件,没有根本区别。

我的猜测是你的开发机器运行的MbUnit构建方式与构建服务器略有不同。 MbUnit v2具有跨版本兼容性问题,可能导致它无法正确识别测试(因为它尝试加载框架组件的不同版本而不是安装)。

顺便说一句,这些问题在MbUnit v3中已基本解决。

如果您还没有这样做,您可能会发现在源代码树中安装MbUnit副本会很有帮助。这将确保始终在任何地方使用一致的版本。