2014-10-01 53 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 
} 

我还是避风港没有找到一种运行测试的好方法,但希望这一点能够在将来帮助某人。

相关问题