Является ли тестирование всего хорошим подходом?

#java #unit-testing #testing

#java #модульное тестирование #тестирование

Вопрос:

У меня есть класс Generator с методом buildDocument , и внутри этого метода есть: service.getDocument() EXTENSION; где private final static String EXTENSION = ".txt";

метод getDocument() уже протестирован в ServiceTest классе. Должен ли я добавить метод test for buildDocument для проверки добавления этого расширения файла? Это немного похоже на тестирование:

 private boolean method(){
   return true;
}
  

следует ли тестировать такие методы?

Комментарии:

1. частный логический метод () { возвращает true; } -> такие методы не должны существовать. если они это сделают, протестируйте их. В противном случае вас ждет сюрприз, если кто-то позже изменит реализацию

2. «метод getDocument() уже протестирован в классе ServiceTest» — если getDocument() завершается неудачей, завершится неудачей только больший тест, поэтому вы понятия не имеете, заключается ли проблема в buildDocument() или getDocument(), поэтому getDocument() также должен быть протестирован.

3. @Stultuske итак, по вашему мнению, эта конкатенация строк должна быть протестирована? Этот метод, который return true был примером для прояснения вопроса.

4. @Michu93 это меняет значение, и, скорее всего, оно где-то используется. Первое, что нужно сделать, это выяснить, действительно ли вам нужен этот метод. Если да, то да, проверьте это.

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

Ответ №1:

Обратите внимание, что ваш метод является частным. Все, что является частным, следует рассматривать как деталь реализации. Таким образом, вы скорее избегаете написания модульного теста для только этой части.

Значение: если у вас где-то уже есть метод тестирования, при котором ваш документ находится в нужном месте с ожидаемым именем (которое будет включать расширение), то вы «достаточно хороши».

Но обратите внимание, что это также немного «личный стиль».

Комментарии:

1. У меня есть тест для expectedName, но без расширения, просто имя документа без .txt , вот почему я спрашиваю, нужно ли просто EXTENSION тестировать

2. Стоит отметить, что это показывает различие между тестовым покрытием и объектом тестирования .

3. @Michu93 Вопрос в том, что существующий тест, почему он не учитывает расширение? Вы видите: если расширение не имеет значения, то вам не нужно его проверять. Если расширение важно, то почему этот тест игнорирует этот важный аспект?

4. @GhostCat getDocument() просто получает имя документа, потому что тогда вы можете добавить расширение, которое вам нужно. Итак, в ServiceTest есть тест только для имени документа, потому что в других классах я могу использовать это getDocument , а затем добавить любое расширение. Я не уверен, нужно ли добавлять test только для .txt` в частный метод

5. @Michu93 Как сказано: вопрос в том… возникнет ли проблема во время выполнения с вашими пользователями, если файл имеет другое расширение?! Если да: убедитесь, что расширение правильное.