tdd – 如何告诉MSTEST在解决方案中运行所有测试项目?

前端之家收集整理的这篇文章主要介绍了tdd – 如何告诉MSTEST在解决方案中运行所有测试项目?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要知道如何告诉MSTEST在解决方文件中运行所有测试项目。这需要从命令行完成。现在我必须通过一个特定的项目文件,我试图让它从一个SOLUTION文件运行。

我希望这是可能的,因为在Visual Studio中,按Ctrl R,A,在当前打开的解决方案中运行所有测试。

我解释了帮助文件方法,你必须具体地传递每个DLL。

我想从我的CruiseControl.NET服务器的命令行运行它,所以我可以编写其他实用程序来实现这一点。如果有一种方法可以通过其他方法发生,请告诉我们。

如何告诉MSTEST为解决方案运行所有测试项目?

<exec>
    <!--MSTEST seems to want me to specify the projects to test -->
    <!--I should be able to tell it a SOLUTION to test!-->
    <executable>mstest.exe</executable>
    <baseDirectory>C:\projects\mysolution\</baseDirectory>
    <buildArgs>/testcontainer:testproject1\bin\release\TestProject1.dll 
    /runconfig:localtestrun.Testrunconfig 
    /resultsfile:C:\Results\testproject1.results.trx</buildArgs>
    <buildTimeoutSeconds>600</buildTimeoutSeconds>
</exec>
要详细说明VladV的答案并使事情变得更具体一些,遵循建议的命名约定运行测试可以很容易地使用 MSBuild自动化。以下从我当前项目的msbuild文件获取代码片段完全符合您的要求。
<Target Name="GetTestAssemblies">
    <CreateItem
        Include="$(WorkingDir)\unittest\**\bin\$(Configuration)\**\*Test*.dll"
        AdditionalMetadata="TestContainerPrefix=/testcontainer:">
       <Output
           TaskParameter="Include"
           ItemName="TestAssemblies"/>
    </CreateItem>
</Target>
<!-- Unit Test -->
<Target Name="Test" DependsOnTargets="GetTestAssemblies">
    <Message Text="Normal Test"/>
<Exec 
    WorkingDirectory="$(WorkingDir)\unittest"
    Command="MsTest.exe @(TestAssemblies->'%(TestContainerPrefix)%(FullPath)',' ') /noisolation /resultsfile:$(MSTestResultsFile)"/>
    <Message Text="Normal Test Done"/>
</Target>

此外,将MsBuild与CruiseControl集成是一块蛋糕。

编辑
以下是您可以从ccnet.config“调用”msbuild的方式。

首先,如果您尚未使用MSBuild作为构建自动化,则会在前面提供的代码段中添加以下xml:

<Project DefaultTargets="Build"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    ..... <insert snippet here> .....
</Project>

保存在例如您的源代码树中的解决方案旁边的RunTests.proj。现在您可以将ccnet.config的位修改为以下内容

<msbuild>
  <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
  <workingDirectory>C:\projects\mysolution\</workingDirectory>
  <baseDirectory>C:\projects\mysolution\</baseDirectory>  
  <projectFile>RunTests.proj</projectFile>
  <targets>Test</targets>
  <timeout>600</timeout>
  <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>

猜你在找的设计模式相关文章