在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的流利断言获得类似的结果?
发布于 2018-07-20 09:34:57
您可以使用这样的断言范围来完成这个任务:
using (new AssertionScope())
{
5.Should().Be(10);
"Actual".Should().Be("Expected");
}发布于 2019-11-07 09:07:39
你可以:
AssertionScope 1:使用(如@RonaldMcdonald所指出的):
using (new AssertionScope())
{
(2 + 2).Should().Be(5);
(2 + 2).Should().Be(6);
}或者:
2.使用 FluentAssertions.AssertMultiple NuGet包(由我自己创建的小包):
AssertMultiple.Multiple(() =>
{
(2 + 2).Should().Be(5);
(2 + 2).Should().Be(6);
});当您导入静态成员时:
using static FluentAssertions.AssertMultiple.AssertMultiple;
//...
Multiple(() =>
{
(2 + 2).Should().Be(5);
(2 + 2).Should().Be(6);
});发布于 2017-08-30 00:43:40
很抱歉,简单的回答是,您目前无法获得与流利断言相同的结果。NUnit断言中有特殊的逻辑,知道它们处于多个断言块中。在这种情况下,它们不会在失败时抛出异常,而是向父多个断言注册失败,当该断言完成时,该断言将报告错误。
流利的断言需要在内部做同样的事情。这可能就像链接到NUnit断言一样简单,甚至只是调用Assert.Fail。我建议向流利断言项目提交一个问题。如果他们需要帮助,可以在GitHub (@ NUnit )上给我指点NUnit内部的工作原理。
https://stackoverflow.com/questions/45949961
复制相似问题