2

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

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

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

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

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

做第1项很容易。但是,我不知道如何做第 2 到第 5 项。谁能指出我正确的方向?

任何帮助将不胜感激。TIA

4

2 回答 2

3

您将需要编写自定义 MS 构建代码,我已经完成了一些类似的任务,如下所示:

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

并听到这个任务的代码

<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 -运行测试签入/

于 2011-09-07T11:47:03.217 回答
0

看看类似的东西:

都是持续集成服务器,可以很好地完成你喜欢做的工作。

于 2011-09-07T09:37:02.840 回答