Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制执行JUnit断言消息?_Java_Testing_Junit_Code Inspection - Fatal编程技术网

Java 如何强制执行JUnit断言消息?

Java 如何强制执行JUnit断言消息?,java,testing,junit,code-inspection,Java,Testing,Junit,Code Inspection,所有JUnit断言方法都有一个可选的第一个参数,即断言失败时打印的消息 如何确保始终传递参数,并且我的项目中的开发人员从不懒散地跳过对断言的描述 是否有一个检查工具可以检查这一点? 有什么我可以做的编程 我的项目对maven很友好。因为代码检查似乎是您的目标,所以我推荐一个名为PMD的工具。如果还没有这方面的规则,我认为创建一个规则是相当简单的。此外,这将帮助您检测开发人员可能正在创建的其他代码混乱 以下是一个链接: 在我们的团队中,我们对拉取请求进行代码审查。如果资产不符合标准,则可以在审阅中

所有JUnit断言方法都有一个可选的第一个参数,即断言失败时打印的消息

如何确保始终传递参数,并且我的项目中的开发人员从不懒散地跳过对断言的描述

是否有一个检查工具可以检查这一点? 有什么我可以做的编程


我的项目对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