gpt4 book ai didi

c# - 不抛出特定异常的委托(delegate)的 NUnit 约束

转载 作者:行者123 更新时间:2023-12-02 16:06:03 24 4
gpt4 key购买 nike

我想测试委托(delegate)是否不会抛出 FooException,但我不在乎它是否会抛出其他任何异常。因此我无法使用 Nothing 约束。

约束模型没有这样的东西:

Assert.That(del, Throws.Not.InstanceOf<FooException>());   //can't use Not like this

这可能吗?

最佳答案

这有点尴尬,但应该可以做到

Assert.That(Assert.Catch(del), Is.Null.Or.Not.TypeOf<FooException>());

就我个人而言,我更喜欢两行版本

var ex = Assert.Catch(del);
Assert.That(ex, Is.Null.Or.Not.TypeOf<FooException>());

或者更清晰的三行

var ex = Assert.Catch(del);
if (ex != null)
Assert.That(ex, Is.Not.TypeOf<FooException>());

这是有效的,因为根本不断言与成功相同。

在语法中缺乏更直接的方法来测试这一点反射(reflect)了开发人员的意见 - 至少在当时 - 您应该始终知道您期望的异常。

关于c# - 不抛出特定异常的委托(delegate)的 NUnit 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45126336/

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