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

标签 visual-studio-2010 unit-testing buildconfiguration

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

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

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

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

  • 构建测试项目。
  • 运行测试项目中的所有测试用例。
  • 在库项目上运行代码分析。
  • 生成测试和代码分析报告。
  • 将报告保存在特定位置。

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

    任何帮助将不胜感激。 TIA

    最佳答案

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

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

  • 并听到这个任务的代码
    <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/

    关于visual-studio-2010 - 使用特定的 Visual Studio 项目构建配置来运行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331570/

    相关文章:

    c++ - VS10 C++ 错误 C2833 : 'operator string' is not a recognized operator or type

    c# - 从 C# 项目导航到 VB.NET 项目中的类或方法时,有没有办法阻止显示 C# 元数据

    C#,NUnit : Is it possible to test that a DateTime is very close, 但不一定等于另一个?

    asp.net-mvc - VS 2010 开发工具包。模板

    visual-studio-2010 - 使用 SURF 时出现运行时错误 Visual Studio 和 OpenCV 错误

    Python:单元测试模块和相关导入

    javascript - Node.js 单元测试

    build - 在构建配置期间获取 "pax archive volume change required"提示

    ios - Swift:iOS 部署目标命令行标志

    ios - 如何在 ios swift 项目中为 dev n prod 使用两个不同的 GoogleService-info.plist 文件?