看来,流利的断言不NUnit的的Assert.Multiple
块内工作:
Assert.Multiple(() =>
{
1.Should().Be(2);
3.Should().Be(4);
});
当运行这段代码,测试第一个断言失败之后立即,所以甚至没有执行第二断言。
但是,如果我使用NUnit的原生断言,我得到了我想要的结果:
Assert.Multiple(() =>
{
Assert.That(1, Is.EqualTo(2));
Assert.That(3, Is.EqualTo(4));
});
而输出包含两个失败的详情:
测试失败 - ExampleTest()
消息:预期:2但为:1
测试失败 - ExampleTest()
消息:预期:4是:3
我怎样才能使用与NUnit的流利断言类似的结果?
对不起,简短的答案是,你不能让当前与流利断言相同的结果。 NUnit的断言有知道他们是在多块断言在他们特殊的逻辑。在这种情况下,他们不扔失败的异常,而是注册到父多个断言它完成时,将报告错误失败。
流利的断言需要做内部同样的事情。这可能是因为链接到NUnit的说法,甚至只是打电话Assert.Fail一样简单。我建议提交一个问题用流利的断言项目。随时与他们指出我在GitHub(@rprouse),如果他们需要关于如何NUnit的内部工作有所帮助。
我知道我迟到了这个,但是我认为这正是你要找的:https://fluentassertions.com/introduction#assertion-scopes。
我读了这个问题寻找同样的事情,所以想我会分享。基本上是这样:
using (new AssertionScope())
{
5.Should().Be(10);
"Actual".Should().Be("Expected");
}