2013-02-20 39 views
1

我無法從MSpec斷言寫入控制檯。我使用Nuget的v0.5.11(無符號)。這裏沒有什麼激進的,但它不起作用。任何人都知道我錯過了什麼?爲什麼Console.WriteLine不能在MSpec斷言中工作?

public class When_doing_stuff 
{ 
    It should_out_stuff_to_console =() => 
    { 
     var val1 = 1; 
     var val2 = 2; 
     (val1 + val2).ShouldEqual(3); 
     Console.WriteLine(val2); 
    }; 
} 
+0

我ve得到了同樣的問題,我在建立context =()=> {..}中輸出東西,因爲=()=> {...}。測試結束但沒有寫入輸出。測試包含一個It,它通過。不過,我相信我在我的spec測試的基類中重定向/禁用了控制檯輸出。也許你也這樣做了? 此外,即時通訊只通過Resharper運行規格測試,也許resharper亞軍沒有顯示它。將在控制檯中進行測試並回復給您。 – BatteryBackupUnit 2013-02-27 12:38:02

+0

Resharper 7.1 + Mspec runner 0.5.11。 MSpec 0.5.11 nuget包。 Resharper亞軍不顯示控制檯輸出,但控制檯亞軍。 – BatteryBackupUnit 2013-02-27 12:46:27

回答

2

我懷疑你的實際代碼中實際上有一個失敗的斷言。你發佈了一個傳遞斷言,應該打印得很好(因爲Alexander和我都在本地進行了驗證)。

然而,一個失敗的斷言將拋出一個SpecificationExceptionConsole行永遠不會執行。你應該在你的斷言之前打印。例如

It should_out_stuff_to_console =() => 
{ 
    Console.WriteLine(val2); 
    (val1 + val2).ShouldEqual(3); 
} 

而且從mspec命令行亞軍

cmd> mspec-clr4.exe test.dll 

Specs in test: 

When doing stuff 
Blah 
» should out stuff to console 

但是,我不建議從你的說法,或在一般的測試運行打印調試語句到控制檯輸出。它會砸毀測試報告(正如你上面看到的)。

+0

謝謝你們,我在用resharper跑,還沒有嘗試過。 Trite示例,但我試圖從調試控制檯獲取某些內容。寫入控制檯是暫時的,但我會嘗試。 – 2013-06-12 13:52:50

0

其實沒有什麼錯在這裏斷言,安東尼:-)

我貼貼到一個新的類庫代碼user287079,看看什麼東西被印在了我的控制檯:

>mspec-clr4 <somewhere>\bin\Debug\ClassLibrary1.dll 

Specs in ClassLibrary1: 

When doing stuff 
2 
» should out stuff to console 


Contexts: 1, Specifications: 1, Time: 0.11 seconds 
+0

哦,是的,正如書面它不是一個問題。我懷疑他的實際問題是一個失敗的斷言。我認爲這個帖子並沒有忠實地重現真正的問題。 (我更新了我的答案,對於混淆抱歉) – 2013-02-20 21:46:41

相關問題