2014-10-01 51 views
0

我已經設法編寫可以清理和構建另一個解決方案的代碼,並從解決方案中運行所有MSTest(也可能是其他的如NUnit),但我需要能夠獲得所有測試類和方法名稱,以便單獨運行測試(或者我可以在輸出字符串同時運行時從輸出字符串中提取通過/失敗測試的名稱 - 但這不是長期可靠的)。如何以編程方式獲取有關或操作其他解決方案的信息? (Visual Studio,C#)

我感覺這應該都是一個單獨的程序/插件,然後我可以使用我需要如何在我的項目中 - 但肯定有人已經寫過類似的東西?

我想象我可以這樣做:

var solution = new Solution("C:\Documents\VisualStudioFolder\MySolution.sln"); 
solution.Clean(); 
solution.Build(); // could return a bool to check it was successful 
List<Test> tests = solution.GetTests(); 
foreach (Test test in tests) { 
    if (test.Run()) { 
     Console.WriteLine("Test passed"); 
    } 
} 

難道這種事情存在?

+0

我建議你使用MSBuild和MSTest可以通過使用Process.Start。 – wonko79 2014-10-01 15:09:39

+0

這可能會有所幫助:http://stackoverflow.com/questions/3996392/execute-unit-tests-using-msbuild-command-line – Mrchief 2014-10-01 15:12:59

+0

是的,這就是我現在正在做的事情,它的建設很好,但爲了運行測試,它不會給出任何類型的結果分解(除非我從輸出字符串中提取它們) – 2014-10-01 15:14:51

回答

0

我需要什麼做的是寫一個Visual Studio包(插件),在其中您可以訪問當前打開的解決方案:

var solution = ((DTE) GetService(typeof (DTE))).Solution; 

然後:

var buildObject = solution.SolutionBuild; 
buildObject.Build(true); // saves and builds 
if (buildObject.LastBuildInfo == 0) { 
    //then build was successful 
} 

我還是避風港沒有找到一種運行測試的好方法,但希望這一點能夠在將來幫助某人。

相關問題