2012-01-11 97 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