gpt4 book ai didi

java - assertEquals,什么是实际的,什么是预期的?

转载 作者:搜寻专家 更新时间:2023-10-30 21:44:31 26 4
gpt4 key购买 nike

我一直想知道在像 TestNG 这样的库中 assertEquals 中的 actual 和 expected 到底是什么意思。

如果我们阅读 Java 文档,我们会看到:

public static void assertEquals(... actual, ... expected)
Parameters:
actual - the actual value
expected - the expected value

根据我的理解,expected 值是已知值,因此是我们期望的值,actual 值是我们要验证的值。例如,假设我们要测试总是必须返回 56 的函数 fooBar

在这种情况下,我会这样做:assertEquals(sth.fooBar(), 56)。但是通过快速搜索 GitHub似乎人们以相反的方式来做,所以 assertEquals(56, sth.fooBar())。但是,当我们甚至不知道该值时,期望值怎么可能是 sth.fooBar() 呢? sth.fooBar() 似乎是我们与已知的预期值进行比较的实际值。

我知道测试的正确性没有区别,但我想遵循“正确”的方式。

最佳答案

大多数测试框架(xUnit 系列)都基于 JUnit 框架。 JUnit 中的 Assert 函数族具有 (expected, actual) 格式;它成为一种约定,大多数其他框架都遵循该约定。

一些框架(如 TestNG 或 NUnit 2.4+ for .NET)颠倒了这个顺序(使用基于约束的 NUnit 模型)以提高可读性(“确保实际值为 56”比“确保 56 是实际值”)感觉更自然。

底线是:坚持框架的惯例。如果使用 JUnit,请将期望值放在首位。如果您使用 TestNG,请将实际值放在第一位。你是对的,当你不小心反转参数时,这对测试结果没有影响。但这对您从失败的测试中获得的默认消息有很大的不同。当您在 JUnit 中的反转 assertEquals(ShouldBeTrueButReturnsFalse(), true) 失败时,默认消息显示“预期 [false] 但发现 [true] ”,它应该说“预期 [true] 但发现 [false]”。至少可以说,这令人困惑,您不必处理该消息可能的误导。

你提供的Github链接中的一些单元测试不遵循约定,也有同样的问题。不要那样做。 坚持框架的惯例

关于java - assertEquals,什么是实际的,什么是预期的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com