Соглашение о присвоении имен суффикс JUnit или [закрытый] Тест префикса

50
задан Ophidian 9 July 2010 в 02:18
поделиться

6 ответов

Другой аргумент в пользу суффикса - по крайней мере, на английском языке:

Класс обычно представляет собой существительное , это модель концепции. Экземпляр одного из ваших тестов будет «MyClass test». Напротив, метод моделирует какое-то действие, например «проверить [the] вычислить [метод]».

Из-за этого я всегда использую «суффикс» для тестовых классов и префикс для тестовых методов:

the MyClass test          --> MyClassTest
test the calculate method --> testCalculate()
85
ответ дан 7 November 2019 в 10:32
поделиться

До JUnit 4 было принято называть ваши тестовые классы SomethingTest, а затем запускать JUnit для всех соответствующих классов * Test.java . В наши дни JUnit 4, управляемый аннотациями, вам просто нужно аннотировать свои методы тестирования с помощью @Test и покончить с этим.Ваши тестовые классы, вероятно, будут находиться в другой структуре каталогов, чем ваш фактический источник (источник в src / тестовые классы в test / ), поэтому в наши дни префиксы / суффиксы в значительной степени не имеют значения.

9
ответ дан 7 November 2019 в 10:32
поделиться

Я предпочитаю использовать суффикс - это означает, что просматривать список файлов в каталоге проще: вам не нужно мысленно игнорировать первые четыре буквы, чтобы добраться до чего-то значимого. (Я предполагаю, что у вас уже есть тесты в другом каталоге, чем производственный код.)

Это также означает, что когда вы используете Open Type (Ctrl-T) в Eclipse, вы в конечном итоге видите как рабочий код, так и его тестируйте одновременно ... что также является напоминанием, если вы не видите тестовый класс :)

52
ответ дан 7 November 2019 в 10:32
поделиться

Не хочу никого обидеть, но думаю, справедливо будет сказать, что "moreunit" гораздо менее известен, чем JUnit, который довольно вездесущ и установил конвенцию суффиксации тестовых классов "Test".

Хотя JUnit4 избавил нас от необходимости следовать соглашениям об именовании классов и методов (например, "postfix Test" и "prefix test"), я думаю, что оба они все еще полезны для ясности.

Представьте себе ужас, когда src/test/java/.../MyClass.myMethod() тестируется src/main/java/.../MyClass.myMethod()...

Иногда полезно отклоняться от соглашений JUnit3 - я нахожу, что называть методы установки по тому, что они делают ("createTestFactory()") и аннотировать их "@Before" гораздо понятнее, чем общее "setUp()".

Это особенно полезно, когда необходимо выполнить несколько несвязанных действий по настройке - они могут быть в отдельных методах, каждый из которых помечен @Before. Это очень хорошо передает независимость действий.

6
ответ дан 7 November 2019 в 10:32
поделиться

Я также использую MyClassTest_XXX, когда хочу разделить тест на несколько классов. Это полезно при тестировании большого класса, и я хочу, чтобы тесты были логически сгруппированы. (Не удается управлять устаревшим кодом, поэтому этот сценарий возникает.) Тогда у меня есть что-то вроде KitchenSinkTest_ForArray, KitchSinkTest_ForCollection и т. Д.

1
ответ дан 7 November 2019 в 10:32
поделиться

я предпочитаю суффикс: TestCase. Это согласуется с: http://xunitpatterns.com/Testcase%20Class.html

-2
ответ дан 7 November 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: