我应该写作
assertTrue("User logged in", user.isLoggedIn());
或
assertTrue("User is not logged in", user.isLoggedIn());
前者在源文件中提供更好的阅读:
“我断言以下情况属实:用户已登录。”
错误信息可以双向阅读:
java.lang.AssertionError: User logged in
“声明用户已登录时出错”
“错误是用户已登录。”
JUnit文档没有提供明确的指南,除非它是
“{@link AssertionError}的识别信息”,
在这两种情况下,文本都标识了正在运行的测试。
常见用法是什么?
答案 0 :(得分:9)
怎么样:
assertTrue("User should be logged in", user.isLoggedIn());
双向工作。
答案 1 :(得分:3)
在第一个示例中使用正断言文本,或者像:
assertTrue("User is logged in", user.isLoggedIn());
原因是:
尝试提供"所有上下文信息"断言消息并没有改善情况,而是造成信息混乱。
你知道,优秀的程序员调试代码并提供工作和更短的代码。
在这个方向上首先要使用肯定断言消息。
另一个方向 - 用越来越多不必要的东西修补代码正在为编程地狱铺平道路。
答案 2 :(得分:2)
那么,你也可以陈述你的假设,然后假设不成立。像这样:
assertTrue("Expected user to be logged it, and wasn't", user.isLoggedIn());
制作更清晰的信息,但输入和阅读的时间更长。
答案 3 :(得分:1)
为了避免这个问题,我越来越倾向于使用assertThat
而不是“低级”断言*方法。实际上,就像this article解释的那样,断言如果失败,它会给你一个非常明确的错误信息。
答案 4 :(得分:0)
您可以使用:
assertTrue("Test if user is logged in", user.isLoggedIn());
执行此操作时,您将验证user.isLoggedIn()
是否属实,您无法确定用户是否已登录,您还不知道,您只是在测试它。< / p>
答案 5 :(得分:0)
有趣的是,我会用:
assertTrue("user should be logged in", user.isLoggedIn());
告诉我这个断言的预期状态是什么。
我认为最好的选择就是你理解的那个。
答案 6 :(得分:-1)
您应该包括两种情况。当你对断言进行三角测量时,你有更好的测试用例。