Почему классы, тестируемые модулем с помощью JUnit, не могут иметь main? - PullRequest
1 голос
/ 06 декабря 2010

Мой лектор упоминал об этом раньше, но я не очень понимаю, почему это так.Кто-нибудь сможет объяснить?

Мы пишем программу для вычисления списка простых чисел в массиве, и мы должны использовать JUnit для обеспечения того, чтобы все члены этого массива были простыми.Почему я не могу использовать основную часть в тестировании этого класса?

Большое спасибо:)

Ответы [ 6 ]

3 голосов
/ 06 декабря 2010

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

Ответ: когда вы становитесь Java-разработчиком и начинаете писать большой объем кода, который обновляется / исправляется с течением времени, это помогает иметь отдельный тестовый плагин, который будет автоматически запускать тесты вашего кода извне кода для проверьте, все ли работает так, как вы ожидаете. Это означает, что вы можете исправить / отладить различные аспекты кода по любой причине, и после этого ваш босс подойдет и спросит, выполняет ли код то же самое, что и клиент хотел сделать после вашего исправления? Без осложнений Вы можете ответить на него без сложных основных ошибок, которые смешиваются с обычным выводом программы (и замедляют код в не тестовых условиях), но с довольно зеленой полосой джунта, которая говорит, что все еще работает. Вы не увидите ценность этого, пока не разовьете большие проекты и у вас не будет сотен тестов. Кроме того, у джунта есть множество других хитростей ...

1 голос
/ 06 декабря 2010

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

Обычно модульные тесты имеют следующую структуру:

  1. Создание инфраструктуры тестирования
  2. Выполнение теста
  3. Проверка пройдена

В вашей ситуации есть что-то похожее, и, таким образом, это хороший кандидат для использования junit.

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

Зачем это делать?Попробуйте оба подхода и убедитесь сами.

1 голос
/ 06 декабря 2010

Поскольку JUnit предоставляет main, который вызывает функции, которые вы предоставляете в своих классах.Вы все еще можете иметь свои собственные функции main;они просто не привыкнут, когда вы запустите JUnit.Вы можете использовать main функции для индивидуального тестирования своих классов, но использование JUnit имеет некоторые преимущества, как описано в ответе org.life.java.

0 голосов
/ 07 декабря 2010

См .: org.junit.runner.JUnitCore.main(String...), что-то подобное лежит в основе.

0 голосов
/ 06 декабря 2010

Поскольку тесты JUnit выполняются средой, не являющейся стандартным консольным приложением.

Средство выполнения тестов JUnit находит тесты по отражению.

См. Документацию здесь .

0 голосов
/ 06 декабря 2010

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

Основной метод - это просто точка входа, и он «определяет» поток процедуры.В модульном тестировании мы не беспокоимся о потоке.Мы просто находимся на блоке.Ход выполнения программы проверяется с помощью теста системы / компонента, а не модульных тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...