使用特定的Visual Studio Project Build配置来​​运行单元测试

时间:2011-09-07 09:29:08

标签: visual-studio-2010 unit-testing buildconfiguration

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

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

我为每个项目和解决方案级别提供了正常的调试和发布构建配置。对于这两种配置,我将其设置为仅构建库项目(因此不会构建测试项目)。

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

  1. 构建测试项目。
  2. 在测试项目中运行所有测试用例。
  3. 对图书馆计划运行代码分析。
  4. 生成测试和代码分析报告。
  5. 将报告保存在特定位置。
  6. 做第1项很容易。但是,我无法弄清楚如何处理第2至5项。任何人都可以指出我正确的方向吗?

    任何帮助将不胜感激。 TIA

2 个答案:

答案 0 :(得分:3)

您需要编写自定义MS构建代码,我已经完成了以下类似的任务:

  • 从TFS获取最新更改
  • 构建包含所有项目的解决方案
  • 在本地部署主数据库
  • 在本地部署测试数据库,其中包含测试数据 数据驱动测试
  • 运行完整性测试或BVT(构建验证测试) 属于类别1(测试数据库和代码之间的集成)
  • 签入挂起的更改

并听取此任务的代码

<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/

答案 1 :(得分:0)

看看像:

所有这些都是Continous Integration Server,它们可以很好地完成你喜欢的工作。