簡體   English   中英

NUnit聲明拋出控制台輸出

[英]NUnit Assert.Throws swallows console output

這是重現此問題的示例程序:

[TestFixture] // NUnit ver. 3.9
public class IssueTest
{
    [Test]
    public void AssertThrowsConsoleIssue()
    {
        Console.WriteLine(1);
        Assert.Throws<Exception>(() =>
        {
            Console.WriteLine(2);
            throw new Exception("test");
        });
        Console.WriteLine(3);
    }
}

我希望輸出是

1
2
3

但實際上是

1
3

我在調試單元測試時遇到此問題,並注意到缺少某些控制台日志輸出。

對我來說,這似乎是一個錯誤。 有沒有一種方法可以防止Assert.Throws吞噬Console輸出?

這是一個錯誤,您才發現它! 通常需要確認錯誤,但是看到您的示例,我可以確切地了解正在發生的事情。

Throws會創建一個臨時的測試結果和上下文,我們將其丟棄。 如果我們不這樣做,則拋出的異常將記錄在結果中。 顯然,我們需要從該臨時結果中保存一些內容,包括文本輸出。 如果您可以在GitHub上提交一個錯誤,這將很酷。

解決方法是,可以使用Roman建議的異步委托。 如果這樣做, Assert.Throws將使用不同的代碼,這些代碼不會創建一次性的上下文和結果。

如果您對此提交了錯誤,我將嘗試為您提供一個更好的解決方案。 ;-)

我有同樣的問題,Roman的破解解決了我的問題。 等待修復的下一個版本:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM