使用MSBuild与TeamCity一起运行XUnit测试

使用MSBuild与TeamCity一起运行XUnit测试,msbuild,xunit.net,msbuild-4.0,Msbuild,Xunit.net,Msbuild 4.0,我试图让TeamCity在构建过程中运行XUnit测试。因此,我创建了一个单独的文件-MyProject.msbuild-与.sln文件位于同一文件夹中,如下所示: <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\..\bin\xun

我试图让TeamCity在构建过程中运行XUnit测试。因此,我创建了一个单独的文件-MyProject.msbuild-与.sln文件位于同一文件夹中,如下所示:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\..\bin\xunit.net\xunit.runner.msbuild.dll" TaskName="Xunit.Runner.MSBuild.xunit"
             />

    <Target Name="Build">
      <MSBuild Projects="MyProject.sln" Targets="Build" Properties="Configuration=Release">
        <xunit Assembly="MyProject.Utility.Tests\bin\Release\MyProject.Utility.Tests.dll" />
      </MSBuild>
    </Target>

</Project>

但是,无论我做什么,VS2010都讨厌我将元素放在元素中。如果对该文件运行MSBuild,它会告诉我更多信息:

P:\MyProject\src>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe MyProject.msbuild /tv:4.0 /v:d
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.225]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 08.11.2011 21:08:46.
Project "P:\MyProject\src\MyProject.msbuild" on node 1 (default targets).
Building with tools version "4.0".
P:\MyProject\src\MyProject.msbuild(8,9): error MSB4067: The element <xunit> beneath element <MSBuild> is unrecognized.
Done Building Project "P:\MyProject\src\MyProject.msbuild" (default targets) -- FAILED.


Build FAILED.

"P:\MyProject\src\MyProject.msbuild" (default target) (1) ->
  P:\MyProject\src\MyProject.msbuild(8,9): error MSB4067: The element <xunit> beneath element <MSBuild> is unrecognized.

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.01
P:\MyProject\src>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe MyProject.MSBuild/tv:4.0/v:d
Microsoft(R)生成引擎版本4.0.30319.1
[Microsoft.NET Framework,版本4.0.30319.225]
版权所有(C)微软公司2007。版权所有。
构建开始于2011年11月8日21:08:46。
节点1上的项目“P:\MyProject\src\MyProject.msbuild”(默认目标)。
使用工具版本“4.0”构建。
P:\MyProject\src\MyProject.msbuild(8,9):错误MSB4067:无法识别元素下的元素。
已完成生成项目“P:\MyProject\src\MyProject.msbuild”(默认目标)——失败。
生成失败。
“P:\MyProject\src\MyProject.msbuild”(默认目标)(1)->
P:\MyProject\src\MyProject.msbuild(8,9):错误MSB4067:无法识别元素下的元素。
0个警告
1个错误
时间流逝00:00:00.01
因此,我目前的猜测是,它没有以某种方式成功加载xunit.runner.msbuild.dll,或者我做了一些奇怪的事情

但是,我认为如果它不能加载xunit.runner.msbuild.dll,它会告诉我。我确保文件没有被阻止(通过使用7zip解包xunit发行版)


想知道如何让MSBuild吞下生成文件并运行测试吗?

如果不想嵌套调用,请尝试以下操作:

<Target Name="Build"> 
    <MSBuild Projects="MyProject.sln" Targets="Build" Properties="Configuration=Release"> 
    </MSBuild> 
    <xunit Assembly="MyProject.Utility.Tests\bin\Release\MyProject.Utility.Tests.dll" /> 
</Target> 


目标中的项目是按顺序执行的。

嗯,这非常简单。谢谢!:)不用担心,顺便说一下,我可能会将测试从构建中分离出来,给自己一个测试目标和一个构建目标(尽管我检查的msbuild的示例位没有),然后您可以选择在任何上下文中运行任何目标。谢谢,是的,我可能会朝这个方向走。也许这也会使TeamCity的代码覆盖变得更容易我打算以构建、单元测试、打包、部署、冒烟测试等目标结束——目前,我将最后3个目标打包到一个目标中(它可以工作…)。我还需要一个集成测试目标。我面临的挑战是,我有很多项目要把这些东西打包