gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:17:37 24 4
gpt4 key购买 nike

我需要知道如何告诉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>

关于tdd - 我如何告诉MSTEST在解决方案中运行所有测试项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1144152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com