2016-08-05 5 views
0

Я отлаживаю веб-приложение Tomcat и наткнулся на класс, который имеет основной метод с некоторым тестовым кодом.Назначение основного метода в веб-приложении Java

Есть ли способ узнать, вызвано ли это из веб-приложения? Или это был просто способ тестирования предыдущих разработчиков в среде IDE?

+6

Это типично устаревший подход к написанию тестов, использование чего-то вроде junit или testng - более современный/обычный подход. У Tomcat есть свой основной метод для запуска tomcat и, насколько мне известно, не вызовет никаких других основных методов (если только он не вызван напрямую из сервлета или некоторых таких). – Taylor

+0

Ваша IDE должна быть в состоянии показать вам вызывающих абонентов для данного метода, чтобы вы могли убедиться, что он не используется. И если метод * * используется, вы получите сообщение об ошибке при попытке создания. – shmosel

ответ

0

Метод static void main() не должен вызываться из приложения, но лучше всего знать, что он проверяет его, ища, если имя класса упоминается где-то (текстовый поиск по имени класса во всех проектах приложения лучше, потому что можно использовать отражение). Если вы не найдете никаких ссылок, это хороший знак. Если у вас есть ссылки на него, вы должны понять, почему. Иначе, вы должны проверить, что класс не включен в нашу войну. Это на войне, вы должны исключить его, переместив его в тестовую папку вашего проекта (например, src/test/java в Maven/Gradle).

Это тест с плохим дизайном (без модульного теста) или полезный тестовый код? Это зависит от. Иногда вам нужно выполнить некоторые тесты без модульного теста, потому что вы не осваиваете среду, которую вы пытаетесь протестировать (удаленный веб-сервис, данные, которые вы не используете, поскольку внешние и т. Д.), Поэтому вы не выполняете хотите, чтобы из-за этого сбой вашей сборки. Как правило, модульные тесты воспроизводятся автоматически в сборке. Итак, вы не должны использовать единичный тест для такого теста, а скорее static void main(). Таким образом, вы можете сыграть в свой ручной тест, когда захотите, и независимо от результата, у вас нет сбоя сборки.

Если вы заметили, что тест был выполнен для такого рода потребностей, вы должны добавить комментарий Java о нем. В противном случае, если тест воспроизводится и полагается на внутренние службы вашего приложения, а также не полагается на изменение данных базы данных, вы должны добавить комментарий FIXME, чтобы указать, что его следует преобразовать в единичный тест.

Смежные вопросы