Java 如何强制执行JUnit断言消息?
所有JUnit断言方法都有一个可选的第一个参数,即断言失败时打印的消息 如何确保始终传递参数,并且我的项目中的开发人员从不懒散地跳过对断言的描述 是否有一个检查工具可以检查这一点? 有什么我可以做的编程Java 如何强制执行JUnit断言消息?,java,testing,junit,code-inspection,Java,Testing,Junit,Code Inspection,所有JUnit断言方法都有一个可选的第一个参数,即断言失败时打印的消息 如何确保始终传递参数,并且我的项目中的开发人员从不懒散地跳过对断言的描述 是否有一个检查工具可以检查这一点? 有什么我可以做的编程 我的项目对maven很友好。因为代码检查似乎是您的目标,所以我推荐一个名为PMD的工具。如果还没有这方面的规则,我认为创建一个规则是相当简单的。此外,这将帮助您检测开发人员可能正在创建的其他代码混乱 以下是一个链接: 在我们的团队中,我们对拉取请求进行代码审查。如果资产不符合标准,则可以在审阅中
我的项目对maven很友好。因为代码检查似乎是您的目标,所以我推荐一个名为PMD的工具。如果还没有这方面的规则,我认为创建一个规则是相当简单的。此外,这将帮助您检测开发人员可能正在创建的其他代码混乱 以下是一个链接:
在我们的团队中,我们对拉取请求进行代码审查。如果资产不符合标准,则可以在审阅中对其进行标记。仅允许合并具有足够批准的请求 也就是说,我可能不会在我的团队中强制执行此规则。相反,我会告诉他们编写更短的测试,其中方法名称将清楚地说明意图,如:
@Test(expected = IllegalArgumentException.class);
shouldThrowExceptionWhenInputIsNegative() {}
@Test
shouldFilterOutNulls() {}
@Test
shouldCreateAdditionalRecordWhenBankBalanceIsOver10000() {}
等等。您可以在自己的类中包装JUnit Assert,隐藏无消息方法,并强制开发人员导入您的Assert库。即使有办法,也不要这样做。在大多数情况下,junit的本机消息就是您所需要的:“预期为6,但实际为3”,并带有一个堆栈跟踪,向您显示出错的地方。更重要的是为你的测试选择好的名字。@CarlManaster在大多数情况下,但是
assertTrue
和assertFalse
确实受益于一些有意义的,用户提供的消息。@DavidConrad使用assertThat
和hamcrest匹配器提供更多信息的默认错误messages@dkatzel这仍然是一个问题,如何检查所有代码,以确保项目中的所有开发人员都在使用assertThat
和hamcrest匹配器,而不是不带字符串消息的assertTrue
和assertFalse
。