用流利断言库中的多个断言

问题描述 投票:3回答:2

看来,流利的断言不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的流利断言类似的结果?

c# nunit assertions nunit-3.0 fluent-assertions
2个回答
3
投票

对不起,简短的答案是,你不能让当前与流利断言相同的结果。 NUnit的断言有知道他们是在多块断言在他们特殊的逻辑。在这种情况下,他们不扔失败的异常,而是注册到父多个断言它完成时,将报告错误失败。

流利的断言需要做内部同样的事情。这可能是因为链接到NUnit的说法,甚至只是打电话Assert.Fail一样简单。我建议提交一个问题用流利的断言项目。随时与他们指出我在GitHub(@rprouse),如果他们需要关于如何NUnit的内部工作有所帮助。


13
投票

我知道我迟到了这个,但是我认为这正是你要找的:https://fluentassertions.com/introduction#assertion-scopes

我读了这个问题寻找同样的事情,所以想我会分享。基本上是这样:

using (new AssertionScope())
{
5.Should().Be(10);
"Actual".Should().Be("Expected");
} 
© www.soinside.com 2019 - 2024. All rights reserved.