在Cruisecontrol计划运行时,MSTest未被执行

时间:2010-10-04 11:32:45

标签: msbuild mstest cruisecontrol

一些背景:我试图在我当前的项目(.Net 4.0和VS 2010)上实现Cruisecontrol(2.8.4),MSBuild和MSTest的集成。我正在使用MSBuild构建我的解决方案并将一个MSTest作为AfterBuild Target添加到我的.csproj文件中以运行我的单元测试:

<Target Name="AfterBuild" DependsOnTargets="GetTestAssemblies" >
<Message Text="Normal Test" />
<Exec Command="del $(MSTestResultsFile)" ContinueOnError="true" />
<Exec WorkingDirectory="$(WorkingDir)" Command="MsTest @(TestAssemblies->'%(TestContainerPrefix)%(FullPath)',' ') /noisolation /resultsfile:$(MSTestResultsFile)" />
<Message Text="Normal Test Done" />

我已经将cruisecontrol.config配置为使用MSBuild,即:

<schedule interval="300">
    <exec command="cmd.exe"
            workingdir="C:\CruiseControl\projects\Framework"
            args="msbuild Solution.sln" />
</schedule>

当我从命令提示符运行构建时,即:cmd.exe:

msbuild <projectname>.sln

,解决方案和项目正确构建,单元测试运行并将结果输出到指定的/resultsfile:$(MSTestResultsFile)

我的问题是当执行cruisecontrol计划中的命令时,构建(MSBuild)实际上已成功,但我的MSTest:/resultsfile:$(MSTestResultsFile)为空。似乎单元测试根本没有运行。

我不知道为什么会这样? 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

通过更改cruisecontrol schedule config来使用msbuild.exe而不是cmd.exe导致单元测试被执行

<schedule interval="300">
    <exec command="msbuild.exe"
                    workingdir="C:\Windows\Microsoft.NET\Framework\v4.0.30319"
                    args="C:\CruiseControl\projects\DTSFramework\DTS.Solution.sln" />
</schedule>