命名单元测试Java中的重载方法

时间:2011-07-08 16:33:31

标签: java unit-testing naming-conventions

当目标有重载时,命名单元测试方法的最常用方法是什么。请考虑以下方法:

doSomething();
doSomething(String);

您如何命名相应的测试方法?这会是最被接受的方式吗?

testDoSomething();
testDoSomethingString();

4 个答案:

答案 0 :(得分:5)

如果有的话,做任何让你和你的同事更容易理解的东西。我认为这取决于你对该类的其他测试是什么,但基于这两种方法,这就是我要做的:

测试doSomething()的测试方法:

  • doSomething_void_success(这将是测试成功路径的一些测试)
  • doSomething_void_fail(这将是测试错误路径的一些测试)
  • doSomething_void_someOtherTest

测试doSomething(String)的测试方法:

  • doSomething_String_success
  • doSomething_String_fail
  • doSomething_String_someOtherTest

我不再使用测试前缀,因为JUnit 4不需要它。我只使用@Test注释

答案 1 :(得分:4)

没有一种“最常被接受的方式” - 选择你(团队)认为最可读和最干净的方式。

我个人不再使用test前缀,因为自JUnit 4以来没有必要,它会降低可读性和可搜索性。我尝试在他们测试的场景之后命名我的测试方法。在你的简单案例中可能是

doSomethingSuccessfully();
...
failsToDoSomethingWithAString();
...
doSomethingWithAStringAndFail();

答案 2 :(得分:0)

我认为这是你的开发环境惯例的问题。

我更喜欢使用下划线,因为它允许更清晰地表示测试中的方法。

我还是,仍然使用test前缀,尽管其他人指出它不是必需的。我通常这样做是为了将实际测试与可能在测试类中的一些辅助方法分开。

所以,在你的情况下,我会做

test_doSomething
test_doSomething_String

答案 3 :(得分:0)

使用所需的行为来命名测试方法,例如:

/**
*
* @return
* @should say hello, and nothing more that that
*/
String sayHello();
}

会创建一个像这样的测试方法:

@Test
public void sayHello_shouldSayHelloAndNothingMoreThatThat() throws Exception {
//TODO auto-generated
Assert.fail("Not yet implemented");
}

我为IntelliJ IDEA开发了一个插件(也存在Eclipse版本),为您创建这些测试方法,你可以在这里找到它:

http://plugins.intellij.net/plugin/?idea&id=5847