gpt4 book ai didi

python - 为什么assertEquals()参数的顺序是(预期的,实际的)?

转载 作者:行者123 更新时间:2023-12-03 05:52:26 25 4
gpt4 key购买 nike

为什么这么多assertEquals()或者类似的函数将期望值作为第一个参数,将实际值作为第二个参数?这对我来说似乎违反直觉,那么这种不寻常的顺序有什么特殊原因吗?

最佳答案

answer来自Kent Beck ,JUnit 的共同创建者(可能是这个约定 originates ,因为他早期的 SUnit doesn't appear to have included assertEquals ):

Line a bunch of assertEquals in a row. Having expected first makes them read better.

在我的回答的最初版本中,我说我不明白这一点。以下是我在测试中经常看到的内容:

assertEquals(12345, user.getId());
assertEquals("kent", user.getUsername());
assertEquals("Kent Beck", user.getName());

我认为首先考虑实际值会更好。这将更多重复的样板放在一起,对齐我们正在测试其值的方法调用:

assertEquals(user.getId(), 12345);
assertEquals(user.getUsername(), "kent");
assertEquals(user.getName(), "Kent Beck");

(我更喜欢这个顺序还有其他原因,但对于这个关于为什么是另一种方式的问题,肯特的推理似乎就是答案。)

但是,Bob Stein 有 a comment below (很像 this one )这表明了一些“首先预期”的事情。主要思想是期望值通常可能更短——通常是文字或变量/字段,而不是可能复杂的方法调用。结果是:

assertEquals(12345,       user.getId());
assertEquals("kent", user.getUsername());
assertEquals("Kent Beck", user.getName());

谢谢,鲍勃!

关于python - 为什么assertEquals()参数的顺序是(预期的,实际的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404978/

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