tdd – 如何告诉MSTEST在解决方案中运行所有测试项目?
发布时间:2020-12-14 04:32:14 所属栏目:百科 来源:网络整理
导读:我需要知道如何告诉MSTEST在解决方案文件中运行所有测试项目。这需要从命令行完成。现在我必须通过一个特定的项目文件,我试图让它从一个SOLUTION文件运行。 我希望这是可能的,因为在Visual Studio中,按Ctrl R,A,在当前打开的解决方案中运行所有测试。
我需要知道如何告诉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:projectsmysolution&;/baseDirectory> <buildArgs>/testcontainer:testproject1binreleaseTestProject1.dll /runconfig:localtestrun.Testrunconfig /resultsfile:C:Resultstestproject1.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集成是一块蛋糕。 编辑 首先,如果您尚未使用MSBuild作为构建自动化,则会在前面提供的代码段中添加以下xml: <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> ..... <insert snippet here> ..... </Project> 保存在例如您的源代码树中的解决方案旁边的RunTests.proj。现在您可以将ccnet.config的位修改为以下内容: <msbuild> <executable>C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MSBuild.exe</executable> <workingDirectory>C:projectsmysolution&;/workingDirectory> <baseDirectory>C:projectsmysolution&;/baseDirectory> <projectFile>RunTests.proj</projectFile> <targets>Test</targets> <timeout>600</timeout> <logger>C:Program FilesCruiseControl.NETserverThoughtWorks.CruiseControl.MsBuild.dll</logger> </msbuild> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |