gpt4 book ai didi

c# - NUnit 的 TestCustomException 不关心异常类型

转载 作者:行者123 更新时间:2023-11-30 21:19:05 25 4
gpt4 key购买 nike

如果我想测试一个方法是否抛出特定类型的异常,NUnit 的 ExpectedException 属性不关心实际类型;如果我在方法调用之前抛出一个通用异常,则测试通过:

    [Test, ExpectedException(typeof(TestCustomException))]
public void FirstOnEmptyEnumerable()
{
throw new Exception(); // with this, the test should fail, but it doesn't
this.emptyEnumerable.First(new TestCustomException());
}

如果我想检查测试是否抛出确切的异常类型,我必须像这样手动执行一些操作:

    [Test]
public void FirstOnEmptyEnumerable()
{
try
{
throw new Exception(); // now the test fails correctly.
this.emptyEnumerable.First(new TestCustomException());
}
catch (TestCustomException)
{
return;
}

Assert.Fail("Exception not thrown.");
}

我错过了什么吗?

最佳答案

我从来没有使用过 ExpectedException,所以我没有任何经验可以分享。一个选项是断言它直接在测试中抛出。像这样:

[Test]
public void FirstOnEmptyEnumerable()
{
Assert.Throws<TestCustomException>(() => this.emptyEnumerable.First(new TestCustomException()));
}

我发现这种方法更具可读性,因为您可以准确地在预期异常发生的位置测试异常,而不是说“我在这个函数的某个地方抛出异常”。

关于c# - NUnit 的 TestCustomException 不关心异常类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3957151/

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