一些背景:我试图在我当前的项目(.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)
为空。似乎单元测试根本没有运行。
我不知道为什么会这样? 任何帮助将不胜感激!
答案 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>