MSBuild以运行单元测试

MSBuild以运行单元测试,msbuild,continuous-integration,build-automation,automated-tests,test-runner,Msbuild,Continuous Integration,Build Automation,Automated Tests,Test Runner,我正在尝试配置CruiseControl.net,以便定期构建存储库代码并运行解决方案中包含的测试。我已经配置了从svn服务器和构建部分检索代码。但我无法对它进行测试。MSBuild一直在抱怨这一点 错误MSB4057:目标“测试”不存在 项目中不存在 我还试着通过命令行运行测试,看看这是否适用于相同的错误。我使用了:MSBuild.exe TestProject.csproj/t:Test 我的配置如下: <tasks> <msbuild> &l

我正在尝试配置CruiseControl.net,以便定期构建存储库代码并运行解决方案中包含的测试。我已经配置了从svn服务器和构建部分检索代码。但我无法对它进行测试。MSBuild一直在抱怨这一点

错误MSB4057:目标“测试”不存在 项目中不存在

我还试着通过命令行运行测试,看看这是否适用于相同的错误。我使用了:MSBuild.exe TestProject.csproj/t:Test

我的配置如下:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>C:\WorkingDir\build\MainProject</workingDirectory>                
        <projectFile>MainProject.csproj</projectFile>
        <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
        <targets>Build</targets>
        <timeout>900</timeout>
        <logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
    </msbuild>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>C:\WorkingDir\build\TestProject</workingDirectory>                
        <projectFile>TestProject.csproj</projectFile>
        <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
        <targets>Test</targets>
        <timeout>900</timeout>
        <logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
    </msbuild>  
    </tasks>

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
C:\WorkingDir\build\main项目
MainProject.csproj
/noconsolelogger/p:Configuration=Debug/v:diag
建造
900
C:\ProgramFiles(x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
C:\WorkingDir\build\TestProject
TestProject.csproj
/noconsolelogger/p:Configuration=Debug/v:diag
试验
900
C:\ProgramFiles(x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll

如果有任何正确的提示,我将不胜感激。

您还没有解释您正在使用的测试框架,这在这里非常关键

对于MSTest,此调用内容是[因为运行程序内容是Visual Studio的一部分,这就是为什么运行MSTest的任务不能是MSBuild的一部分,而MSBuild是.NET Framework的一部分--这也是为什么MSTest强制在生成服务器上安装[在2010年,是]Visual Studio的子集(关于这个话题,这里有很多问题)]

对于NUnit,有一个任务可以向其提供文件列表


底线-将测试自定义目标添加到.csproj文件中,该文件将触发显著的MSBuild包装任务以调用测试运行程序。

很抱歉,我没有说得更清楚。是的,我测试项目属于MSTest类型(使用VS 2010)。我想这意味着除非在生成服务器上安装了visual studio,否则我无法运行测试。没有解决办法吗?我的意思是在生成服务器上安装visual studio似乎无法达到目的,不是吗?2010年,至少应该有一个独立的MSTest生成服务器安装程序(不确定是否发生了这种情况-找出答案并对答案进行评论对您来说是件好事…)查看和(但您没有说是否使用2010).MSTest就像一盒青蛙一样疯狂-你会在这里看到我的很多xUnit.net sealotry,就像这样疯狂!是的,我使用的是VS 2010。我最终还是切换到了nunit。有一个选项可以安装visual studio test edition的测试版本,但nunit似乎更容易。而且迁移到fro也非常容易我是MSTest。谢谢你的帮助help@shake:恭喜!顺便说一句,从NUnit和MSTest到xUnit非常容易。只需说:P