如何在Assert.All函数中使用多个断言

c#

我不确定是否可能,但我相信应该。我希望我不会错过一些很容易的事情。

我正在使用.Net CorewithXUnit并尝试在Assert.All.

一个断言正常工作,而两个断言导致编译时错误Operator '&&' cannot be applied to operands of type 'void' and 'void'.。不知道是什么意思。

这编译。

Assert.All(users, user => Assert.True(user.IsAdministrator));
Assert.All(users, user => Assert.True(user.Age >= YOUNG_AGE));

这不编译。

Assert.All(users, user => (Assert.True(user.IsAdministrator) && Assert.True(user.Age >= YOUNG_AGE)));

如果您能帮助我,我将不胜感激,谢谢!

回答

Assert.True是一个返回void而不是的函数bool。这就是您不能使用&&运算符的原因。

您可以使用匿名函数:

Assert.All(users, user =>
{
    Assert.True(user.IsAdministrator);
    Assert.True(user.Age >= YOUNG_AGE);
});

或者您可以在方法中执行此操作,以便它也可以重用:

Assert.All(users, user => AssertUser(user));

private static void AssertUser(User user)
{
    Assert.True(user.IsAdministrator);
    Assert.True(user.Age > YOUNG_AGE);
}


以上是如何在Assert.All函数中使用多个断言的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>