2015-10-26 77 views
1

适用于java junits测试方法的命名约定是什么?适用于junit测试方法的命名约定

公共无效testServiceName_NullValue() 或 公共无效testServiceName_nullValue()

有什么建议?

谢谢

+0

没有约定。我个人更喜欢尊重Java命名约定(没有下划线)的东西,并且应该以should开头:public void shouldThrowWhenNullArgument(),public void shouldReturnTrueWhenValidArgument()',等等。它允许在IDE中搜索或调用调用层次时从生产方法中识别测试方法。 –

回答

2

我没有看到一个标准,不像一般的编码(例如谷歌的)。然而,在我的团队中,我们认为测试名称应该清楚地说明它的作用,即使结果名称比通常的方法名称长得多。由此产生的名称最终不会太长,因为测试应该只关注一件事情。否则,你应该重新考虑你的测试范围或你的单位的设计。

具体而言,我们倾向于遵循约定if/whenConditionThenExpectedState/Behavior。我们省略了测试前缀,该前缀在今天是不必要的,并且不增加名称的价值。

+2

个人而言,我倾向于使用下划线,例如methodName_should_throw_exception_if_value_is_null()。这个想法很简单,就是没有人会用手调用这个方法,只有当你真正看到它是测试失败的时候,所以使它更具可读性才能胜过传统的命名约定。 –