2012-01-11 189 views
0

我正在使用RemoteTestRunner运行NUnit测试。最后,我得到一个包含结果的对象TestResult。单元测试项目编译为控制台应用程序。 问题是,运行测试后,输出会以某种方式重定向,并且无法将结果打印到控制台。从代码运行NUnit - 如何输出结果到控制台?

这是代码。它不输出任何东西,甚至不是"Open, sesame!"(尽管它运行到最后 - 在调试器中确认)。

有什么建议吗?

另外,有没有一种内置的方式来列出给定TestResults实例的失败结果?

public static void Main() 
    { 
     TestPackage testPackage = new TestPackage(AssemblyPath); 
     RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
     remoteTestRunner.Load(testPackage); 
     TestResult testResult = remoteTestRunner.Run(null); 

     Console.WriteLine(testResult.IsFailure); 

     Console.WriteLine("Open, sesame!"); 

    } 
    public static string AssemblyPath 
    { 
     get 
     { 
      string codeBase = Assembly.GetExecutingAssembly().CodeBase; 
      UriBuilder uri = new UriBuilder(codeBase); 
      string path = Uri.UnescapeDataString(uri.Path); 
      return path; 
     } 
    } 

回答

3

你有没有试着用

var currentOut = Console.Out; 

然后运行测试一旦运行已与

Console.SetOut(currentOut); 

进行设置回之前进行存储控制台的电流输出流此外,是否有一种内置的方式来列出给定TestResults实例的失败结果?

我一直没能找到任何。但是,以下代码应该为您提供一些帮助。它递归地引入组合的TestResult结构并输出到控制台每个测试的结果。

static void OutputResult(TestResult result) 
{ 
    if(result.HasResults) 
    { 
     foreach (var childResult in result.Results) 
     { 
      OutputResult((TestResult)childResult); 
     } 
     return; 
    } 

    Console.WriteLine("{0}:{1}", result.FullName, result.ResultState); 
} 
+0

不错的诀窍,它的工作原理。 – 2012-01-11 13:33:50

+0

谢谢,那有效 – 2012-11-06 08:36:27