我们使用构建服务器执行的mstest运行我们的单元测试。
我们的惯例是每个单元测试项目以" .Test"结束。每个集成测试项目以" .IntegrationTest"
结束是否可以指定mstest从符合我们惯例的项目中运行所有测试?
现在,我们在一行中手动列出我们所有的测试项目,并且它变得非常繁琐且无法维护:
" C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ mstest" /testcontainer:D:\workspace\unittestjob\solution\project1.Test\bin\Release\project1.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project2.Test\bin\Release\project2.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project3.Test\bin\Release\project3.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project4.Test\bin\Release\project4.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project5.Test\bin\Release\project5.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project6.Test\bin\Release\project6.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project7.Test\bin\Release\project7.Test.dll /testcontainer:D:\workspace\unittestjob\solution\project8.Test\bin\Release\project8.Test.dll
答案 0 :(得分:2)
可以通过一些PowerShell魔术来完成:
$temp = '/testsettings:D:\workspace\unittestjob\solution\local.testsettings /resultsfile:TestResult.trx ' ; #General stuff
Get-ChildItem D:\workspace\unittestjob\solution\ -Filter *.Test.dll -Recurse | ? {$_.fullname -notmatch 'obj'} | % { $temp = $temp + "/testcontainer:" + $_.FullName+ " "}; #Get all dlls, but exclude the ones from 'obj'. Add /testcontainer to each
$temp = '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest" ' + $temp ; #Prepare the command of MSTest to be ran
iex "& $temp"; #Run MSTest