2

我正在尝试配置 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>

我将不胜感激任何正确方向的提示。

4

1 回答 1

3

你还没有解释你正在使用什么测试框架,这在这里很关键。

对于 MSTest,这个调用是TFS 的一部分[因为运行器是 Visual Studio 的一部分,这就是为什么运行 MSTest 的任务不能是 MSBuild 的一部分,而 MSBuild 是 .NET Framework 的一部分——这也是为什么MSTest 强制 [在 2010 年,Visual Studio 的一个子集] 安装在您的构建服务器上(关于该主题有几个很好的问题)]

对于 xUnit.net,人们会做这样的事情

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

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

于 2010-08-12T06:10:26.973 回答