Именование юнит-тестов методов перегрузок в Java - PullRequest
6 голосов
/ 08 июля 2011

Какой самый приемлемый способ назвать метод модульного тестирования, когда у цели есть перегрузки. Рассмотрим эти методы:

doSomething();
doSomething(String);

Как бы вы назвали соответствующие методы испытаний? Это самый приемлемый способ?

testDoSomething();
testDoSomethingString();

Ответы [ 4 ]

5 голосов
/ 08 июля 2011

Делайте все, что делает вещи более читабельными для вас и ваших коллег, если таковые имеются. Я думаю, что это зависит от того, каковы ваши другие тесты для этого класса, но на основе этих двух методов я бы сделал следующее:

Методы тестирования, которые проверяют 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 голосов
/ 08 июля 2011

Единого «наиболее приемлемого способа» не существует - выберите, что вы (команда) чувствуете наиболее читабельным и чистым.

Лично я больше не использую префикс test, поскольку это не такнеобходимо начиная с JUnit 4, и это ухудшает читабельность и возможность поиска.Я пытаюсь назвать свои методы тестирования после сценариев, которые они тестируют.Который в вашем упрощенном случае может быть

doSomethingSuccessfully();
...
failsToDoSomethingWithAString();
...
doSomethingWithAStringAndFail();
0 голосов
/ 08 июля 2011

Используйте желаемое поведение для именования ваших методов тестирования, например:

/**
*
* @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

0 голосов
/ 08 июля 2011

Я думаю, что это вопрос ваших соглашений по среде разработки.

Я предпочитаю использовать подчеркивание, так как оно позволяет получить более четкое представление о тестируемых методах.

Я также до сих пор использую префикс test, хотя другие отметили, что это не обязательно. Я обычно делаю это для того, чтобы отделить реальные тесты от некоторых вспомогательных методов, которые могут быть в классе тестирования.

Итак, в вашем случае, я бы сделал

test_doSomething
test_doSomething_String
...