YMM*_*YMM 5 c# nunit assertions fluent-assertions nunit-3.0
似乎Fluent Assertions在NUnit的Assert.Multiple块中不起作用:
Assert.Multiple(() =>
{
1.Should().Be(2);
3.Should().Be(4);
});
Run Code Online (Sandbox Code Playgroud)
运行此代码时,测试在第一次断言后立即失败,因此第二个断言甚至没有执行.
但是,如果我使用NUnit的本机断言,我会得到我想要的结果:
Assert.Multiple(() =>
{
Assert.That(1, Is.EqualTo(2));
Assert.That(3, Is.EqualTo(4));
});
Run Code Online (Sandbox Code Playgroud)
输出包含两个故障的详细信息:
测试失败 - ExampleTest()
消息:预期:2但是:1
测试失败 - ExampleTest()
消息:预期:4但是:3
如何使用NUnit的Fluent Assertions获得类似的结果?
Ron*_*ald 17
我知道我迟到了,但我相信这正是你所寻找的:https://fluentassertions.com/documentation/#assertion-scope.
我读这个问题寻找同样的事情,所以我想我会分享它.基本上这个:
using (new AssertionScope())
{
5.Should().Be(10);
"Actual".Should().Be("Expected");
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*iak 10
您可以:
1:使用AssertionScope(如@RonaldMcdonald指出的):
using (new AssertionScope())
{
(2 + 2).Should().Be(5);
(2 + 2).Should().Be(6);
}
Run Code Online (Sandbox Code Playgroud)
或者:
2.使用FluentAssertions.AssertMultiple NuGet包(我自己创建的小包):
AssertMultiple.Multiple(() =>
{
(2 + 2).Should().Be(5);
(2 + 2).Should().Be(6);
});
Run Code Online (Sandbox Code Playgroud)
并且,当您导入静态成员时:
using static FluentAssertions.AssertMultiple.AssertMultiple;
//...
Multiple(() =>
{
(2 + 2).Should().Be(5);
(2 + 2).Should().Be(6);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |