C# 在与名称模式匹配的项目中使用mstest运行所有单元测试

C# 在与名称模式匹配的项目中使用mstest运行所有单元测试,c#,visual-studio,visual-studio-2012,mstest,C#,Visual Studio,Visual Studio 2012,Mstest,我们正在用buildserver执行的mstest运行单元测试 我们有一个惯例,每个单元测试项目以“.test”结尾,每个集成测试项目以“.IntegrationTest”结尾 是否可以指定mstest运行符合我们约定的项目中的所有测试 现在,我们在一行中手动列出了所有这样的测试项目,它变得非常乏味且无法维护: “C:\ProgramFiles(x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest”/testcontainer:D:\works

我们正在用buildserver执行的mstest运行单元测试

我们有一个惯例,每个单元测试项目以“.test”结尾,每个集成测试项目以“.IntegrationTest”结尾

是否可以指定mstest运行符合我们约定的项目中的所有测试

现在,我们在一行中手动列出了所有这样的测试项目,它变得非常乏味且无法维护:


“C:\ProgramFiles(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.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.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.dll

可以通过一些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