滚动您自己的断言(并使用这些方法做一些有趣的事情)

本文关键字:方法 滚动 断言 自己的 | 更新日期: 2023-09-27 17:52:56

我想不出一种方法来描述我想为问题标题做什么——这可能是我不能直接谷歌它的原因。任何帮助,无论是标题或谷歌将是热门。

这是我正在寻找的代码:

Assert.That(true == false);

…或…

Assert.That(true == false).Else<ArgumentException>();
在这一点上,我可以使第二个工作我可以使第一个工作。(第一个抛出一个非常通用的"AssertionFailedException",我希望在没有提供。else()部分的情况下将其保留为默认值。

有办法让这两个都工作吗?

滚动您自己的断言(并使用这些方法做一些有趣的事情)

问题是,当运行时计算That时,它不知道有一个额外的方法调用(Else)要进行。像NUnit这样的框架使用不同的语法来避免这个问题:

Assert.That(someValue, Is.Not.EqualTo(someOtherValue))

你构造一个约束,把它传递给Assert.That,然后NUnit做实际的验证和抛出异常。

你可以引入这样的语法(再次以NUnit为例):

Assert.That(someValue, Is.Not.EqualTo(someOtherValue).Else<ArgumentException>());

这样,配置断言失败时抛出什么异常只是约束配置的一部分。