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

时间:2014-03-24 18:15:26

标签: c# assertion

我无法想出一种方法来描述我试图为问题标题做些什么 - 这可能就是为什么我不能只是谷歌它。任何标题或谷歌搜索的帮助都会很热。

这是我正在寻找的代码:

Assert.That(true == false);

...或...

Assert.That(true == false).Else<ArgumentException>();

此时,我可以使第二个工作我可以使第一个工作。 (第一个抛出一个非常通用的&#34; AssertionFailedException&#34;,如果没有提供.Else()部分,我希望保留默认值。

有没有办法可以让它们都起作用?

1 个答案:

答案 0 :(得分:1)

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

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

您构造一个约束,将其传递给Assert.That,然后NUnit执行实际的验证和异常抛出。

您可以引入这样的语法(再次使用NUnit作为示例):

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

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