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

问题描述 投票:6回答:4

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

doSomething();
doSomething(String);

您如何命名相应的测试方法?这是最受欢迎的方式吗?

testDoSomething();
testDoSomethingString();
java unit-testing naming-conventions
4个回答
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注释


4
投票

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

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

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

0
投票

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

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

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

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

test_doSomething
test_doSomething_String

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

© www.soinside.com 2019 - 2024. All rights reserved.