C# fluent 断言检查结果为 bool

Posted

技术标签:

【中文标题】C# fluent 断言检查结果为 bool【英文标题】:C# fluent assertions result of check as bool 【发布时间】:2021-08-27 19:06:30 【问题描述】:

我正在尝试在测试框架之外的 C# 上使用 Fluent Assertions。有什么办法可以将 FA 检查设为 bool 吗?例如,我需要实现以下目标:

bool result= a.Should().Be(0);

如果通过则 result = true; 如果失败,result = false。

有没有办法从断言中转换或提取bool 结果?

【问题讨论】:

您是否有理由要在代码中使用测试框架而不是仅仅编写bool result = a == 0; 嗨格林杰德。这是一种练习,我想在其中显示 concole 测试信息。由于我使用 XUnit 框架进行了测试,其中我使用了 FluertAssertions,因此这是复制所有检查的最简单方法。 【参考方案1】:

Fluent Assertions 旨在抛出测试框架捕获的异常,而不是返回值。

你能做的最好的事情是创建一个接受动作的方法,并在动作抛出时捕获异常。在catch 中,您将返回false

public bool Evaluate(Action a)

    try
    
        a();
        return true;
    
    catch
    
        return false;
    

你会这样使用它:

bool result = Evaluate(() => a.Should().Be(0));

这在负面情况下会有很糟糕的表现;抛出异常并不便宜。你可能会因为exceptions shouldn't be used for flow control而受到其他人的不满。

也就是说,这就是你想要的。

【讨论】:

请注意,当委托自己抛出异常而不是重新抛出异常时,这将返回 false。 是的,这就是 OP 想要的——断言失败时的 false 值。 谢谢,这回答了我的问题。我只是认为它们可能是内置在 Fluent Assertions 中我不知道的机制中。

以上是关于C# fluent 断言检查结果为 bool的主要内容,如果未能解决你的问题,请参考以下文章

接口测试学习——检查结果

python 断言

1-8.jmeter设置断言(检查点)

jmeter察看结果树结果,为啥响应断言为true时,也是红色的?

JMeter接口测试——断言

LoadRunner断言:正确结果有多种情况