Другой аргумент в пользу суффикса - по крайней мере, на английском языке:
Класс обычно представляет собой существительное , это модель концепции. Экземпляр одного из ваших тестов будет «MyClass test». Напротив, метод моделирует какое-то действие, например «проверить [the] вычислить [метод]».
Из-за этого я всегда использую «суффикс» для тестовых классов и префикс для тестовых методов:
the MyClass test --> MyClassTest
test the calculate method --> testCalculate()
До JUnit 4 было принято называть ваши тестовые классы SomethingTest, а затем запускать JUnit для всех соответствующих классов * Test.java
. В наши дни JUnit 4, управляемый аннотациями, вам просто нужно аннотировать свои методы тестирования с помощью @Test
и покончить с этим.Ваши тестовые классы, вероятно, будут находиться в другой структуре каталогов, чем ваш фактический источник (источник в src /
тестовые классы в test /
), поэтому в наши дни префиксы / суффиксы в значительной степени не имеют значения.
Я предпочитаю использовать суффикс - это означает, что просматривать список файлов в каталоге проще: вам не нужно мысленно игнорировать первые четыре буквы, чтобы добраться до чего-то значимого. (Я предполагаю, что у вас уже есть тесты в другом каталоге, чем производственный код.)
Это также означает, что когда вы используете Open Type (Ctrl-T) в Eclipse, вы в конечном итоге видите как рабочий код, так и его тестируйте одновременно ... что также является напоминанием, если вы не видите тестовый класс :)
Не хочу никого обидеть, но думаю, справедливо будет сказать, что "moreunit" гораздо менее известен, чем JUnit, который довольно вездесущ и установил конвенцию суффиксации тестовых классов "Test".
Хотя JUnit4 избавил нас от необходимости следовать соглашениям об именовании классов и методов (например, "postfix Test" и "prefix test"), я думаю, что оба они все еще полезны для ясности.
Представьте себе ужас, когда src/test/java/.../MyClass.myMethod() тестируется src/main/java/.../MyClass.myMethod()...
Иногда полезно отклоняться от соглашений JUnit3 - я нахожу, что называть методы установки по тому, что они делают ("createTestFactory()") и аннотировать их "@Before" гораздо понятнее, чем общее "setUp()".
Это особенно полезно, когда необходимо выполнить несколько несвязанных действий по настройке - они могут быть в отдельных методах, каждый из которых помечен @Before. Это очень хорошо передает независимость действий.
Я также использую MyClassTest_XXX, когда хочу разделить тест на несколько классов. Это полезно при тестировании большого класса, и я хочу, чтобы тесты были логически сгруппированы. (Не удается управлять устаревшим кодом, поэтому этот сценарий возникает.) Тогда у меня есть что-то вроде KitchenSinkTest_ForArray, KitchSinkTest_ForCollection и т. Д.
я предпочитаю суффикс: TestCase. Это согласуется с: http://xunitpatterns.com/Testcase%20Class.html