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

时间:2013-05-07 20:55:45

标签: unit-testing msbuild

我想使用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>

然后调用命令行:

msbuild MyBuild.proj

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

我想我真的有两个问题:

  1. 为什么这甚至不能构建我的解决方案
  2. “TestContainer”元素是否正确执行我的测试
  3. 谢谢!

1 个答案:

答案 0 :(得分:5)

你还没有提供任何实际做任务的任务, 在构建目标内部,您需要调用msbuild任务,您的示例变为:

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

这指定了你真正想要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