使用特定的Visual Studio项目构建配置来运行单元测试

3

我的公司已经拥有一个Team Foundation Server作为持续集成平台。但是,我想要设置的是一种构建配置,开发人员可以在他们自己的开发机器上运行。

假设我有一个Visual Studio解决方案,其中包含一个.NET C#类库项目(我将其称为Library Project)。它还包含另一个包含Library Project的单元测试类的项目(我将其称为Testing Project)。

我有每个项目和解决方案级别的普通Debug和Release构建配置。对于这两个配置,我已经将其设置为仅构建Library Project(因此不会构建Testing Project)。

我想要做的是设置2个名为Debug With Testing和Release With Testing的新构建配置。它们分别与Debug和Release相同,但我需要它们具有以下额外功能:

  1. 构建Testing Project。
  2. 运行Testing Project中的所有测试用例。
  3. 对Library Project进行代码分析。
  4. 生成测试和代码分析报告。
  5. 将报告保存在特定位置。

完成第1项很容易。然而,我无法弄清楚如何完成第2到第5项。有谁能指点我一下?

非常感谢您的任何帮助。

2个回答

3
您需要编写自定义的MS Build代码,我已经完成了一些类似的任务,如下所述:
  • 从TFS获取最新的更改
  • 构建包括所有项目在内的解决方案
  • 本地部署主数据库
  • 本地部署测试数据库,其中包含用于数据驱动测试的测试数据
  • 运行快速测试或BVT(构建验证测试),属于类别1(测试DB和代码之间的集成)
  • 提交待处理的更改
这是这些任务的代码。
<Target Name="GetLatestFromTFS2010" AfterTargets="build" >
 <Message Importance="high" Text ="start GetLatest for the project "></Message>
 <Exec Command='"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" get $/AutoDBand/AutomateDatabaseAndTest/AutomateDatabaseAndTest /recursive /login:YourUsername,YourPassword' ContinueOnError='false'/>

 </Target>
 <!--===========Deploy Database============-->
 <Target Name="DeployDatabase" AfterTargets="GetLatestFromTFS2010" Condition="'$(Configuration)' == 'DebugForCheck-in'">
 <Message Importance="high" Text="-------------------------------- Deploying Database according to the connection string -------------------------------- " />
 <Message Importance="high" Text=" "/>
 <MSBuild Projects="..\DB\DB.dbproj" Targets="Build;Deploy" />
 </Target>

 <!--============Run the Test==================-->
 <Target Name="UnitTests" AfterTargets="DeployDatabase" Condition="'$(Configuration)' == 'DebugForCheck-in'">
 <Message Importance="high" Text="--------------------------------&nbsp; Running Unit Tests for category 1 only--------------------------------"&nbsp; />
 <Message Importance="high" Text=" "/>
 <Exec Command='"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\mstest.exe" /testcontainer:"..\BLTest\bin\Debug\BLTest.dll" /category:cat1' />
 </Target>

 <Target Name="Chekin-pendingChange" AfterTargets="UnitTests" >
 <Message Importance="high" Text ="-------------------------------- start Check-in process-------------------------------- "></Message>
 <Message Importance="high" Text=" "/>
 <Exec Command='"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" checkin $/AutoDBand/AutomateDatabaseAndTest/AutomateDatabaseAndTest /recursive /login:YourUsername,YourPassword' ContinueOnError='false'/>
 </Target>

如需更多信息,您可以查看此带有源代码的文章。 http://mohamedradwan.wordpress.com/2010/11/13/automate-the-best-practice-for-check-in-including-get-latest-deploy-db-run-test-check-in/


这听起来很完美。你知道在哪里可以找到更详细的帮助来构建XML文件,以脚本化我所需的不同构建/目标吗?谢谢。 - millie

0

公司已经拥有一个Team Foundation Server作为持续集成平台。然而,我想要设置的是一种构建配置,开发人员可以在自己的开发机器上运行。 - millie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接