java JUnit断言方法的措辞应该是肯定的还是否定的?
我是否应该写作
assertTrue("User logged in", user.isLoggedIn());
或
assertTrue("User is not logged in", user.isLoggedIn());
前者可以更好地读取源文件:
“我断言以下是正确的:用户已登录。”
错误消息可以双向读取:
java.lang.AssertionError: User logged in
“断言用户已登录时出错”
“错误是用户已登录。”
JUnit文档没有提供一个明确的指南,除非它是
“用于{@link AssertionError}的标识消息,
在这两种情况下,文本标识正在运行的测试
常用的用法是什么
# 1 楼答案
好吧,你也可以陈述你的假设,然后说明假设是如何不成立的。就像这样:
使信息更清晰,但打字和阅读的时间更长
# 2 楼答案
为了避免这个问题,我越来越倾向于使用
assertThat
而不是“低级”的assert*方法。事实上,正如this article所解释的,AssertIt将在失败时为您提供非常清晰的错误消息# 3 楼答案
有趣的是,我会用:
这告诉我这个断言的预期状态
我认为最好的选择是你能理解的
# 4 楼答案
你可以使用:
当你这么做的时候,你在验证
user.isLoggedIn()
是真的,你不能说用户是否登录了,你还不知道,你只是在测试它# 5 楼答案
那么:
这是双向的
# 6 楼答案
在你的断言信息中要绝对积极
使用第一个示例中的肯定断言文本,或者类似于:
原因是:
试图在断言消息中提供“所有上下文信息”并不能改善情况,反而会造成信息混乱
你知道,优秀的程序员会调试代码,并提供有效且较短的代码
在这个方向上,首先要做的就是使用积极的断言消息
另一个方向是——用越来越多不必要的东西修补代码,为编程地狱铺平道路