使用MSBuild从.proj文件运行单元测试

skb*_*skb 4 msbuild unit-testing

我想使用MSBuild运行单元测试.这是我今天如何调用msbuild:

msbuild MySolution.sln

相反,我想使用名为"MyBuild.proj"的MSBuild项目文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5" DefaultTargets="Build">
  <Target Name="Build">
    <ItemGroup>
      <SolutionToBuild Include="MySolution.sln" />
      <TestContainer Include="..\Output\bin\Debug\*unittests.dll"/>
    </ItemGroup>
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

然后调用命令行:

msbuild MyBuild.proj

出于某种原因,当我这样做时,命令会立即成功,并且构建甚至不会发生.我担心因为我是MSBuild的新手,我必须遗漏一些非常明显的东西.

我想我真的有两个问题:

  1. 为什么这甚至不能构建我的解决方案
  2. "TestContainer"元素是否适合执行我的测试

谢谢!

Jam*_*den 5

你还没有提供任何实际做任何事情的任务,在你的构建目标中需要调用msbuild任务,你的例子变成:

<Target Name="Build">
   <ItemGroup>
      <SolutionToBuild Include="MySolution.sln" />
      <TestContainer Include="..\Output\bin\Debug\*unittests.dll"/>
    </ItemGroup>
   <MSBuild Projects="@(SolutionToBuild)"/> 
</Target>
Run Code Online (Sandbox Code Playgroud)

这指定了你真正想要msbuild构建的项目.请参阅:http://msdn.microsoft.com/en-us/library/vstudio/z7f65y0d.aspx以获取更多详细信息及其所需的参数.

那是第一部分.

至于第2部分?你在使用什么测试框架?如果使用mstest id,请尝试在msbuild exec语句中包装命令行mstest.exe,以使其运行并执行测试.请参阅此处的示例:http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/cb87a184-6589-454b-bf1c-2e82771f c3aa