gpt4 book ai didi

c# - NUnit Assert.Throws 吞下控制台输出

转载 作者:行者123 更新时间:2023-11-30 20:27:38 24 4
gpt4 key购买 nike

这是重现该问题的示例程序:

[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 吞噬控制台输出?

最佳答案

这是一个错误,您刚刚发现了它!通常需要确认错误,但看到您的示例,我可以准确理解发生了什么。

Throws 创建一个我们丢弃的临时测试结果和上下文。如果我们不这样做,抛出的异常将记录在结果中。显然,我们需要从临时结果中保存一些东西,包括文本输出。如果您可以在 GitHub 上为此提交错误,那就太好了。

作为解决方法,您可以按照 Roman 的建议使用异步委托(delegate)。如果您这样做,Assert.Throws 将使用不会创建一次性上下文和结果的不同代码。

如果您就此提交错误,我会尝试为您提供更好的解决方法。 ;-)

关于c# - NUnit Assert.Throws 吞下控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com