Я новичок в автоматизированном тестировании в Java.Какой инструмент мне выбрать?JUnit или TestNG? - PullRequest
4 голосов
/ 22 сентября 2010

Я прочитал некоторые сравнения JUnit и TestNG , и похоже, что TestNG имеет больше опций конфигурации. С другой стороны, JUnit больше поддерживается IDE, инструментами сборки, имеет больше плагинов.

У меня нет опыта написания юнит-тестов. Какой инструмент мне выбрать?

P.S. Я думаю, что мой вопрос больше похож на: я должен попробовать TestNG или просто придерживаться JUnit, как и все остальные?

* * 1012 P.S. Мы разрабатываем веб-приложения, поэтому я думаю, что выбор должен учитывать, что мы будем использовать Selenium позже для функционального тестирования.

Ответы [ 7 ]

8 голосов
/ 22 сентября 2010

TestNG был написан, чтобы преодолеть некоторые предполагаемые ограничения JUnit 3. Прочтите сообщение в блоге Седрика или другие статьи на сайте TestNG , чтобы увидеть его мышление.

Обратите внимание, что некоторые ограничения JUnit 3 были по замыслу , и TestNG сознательно позволяет вам делать вещи, которые разработчики JUnit явно запретили.

Самое большое преимущество TestNG над JUnit 3 заключалось в том, что оно позволяло вам использовать аннотации для определения ваших тестов, а не заставлять расширять базовые классы JUnit. JUnit 4 теперь также может использовать аннотации таким же образом, сокращая разрыв.

Самое большое оставшееся различие между TestNG и JUnit заключается в том, что TestNG позволяет вашим тестам зависеть друг от друга и позволяет выражать эти зависимости через аннотации тестов. Вместо этого JUnit заставляет все ваши тесты быть независимыми друг от друга.

Конечно, есть и другие отличия - TestNG по умолчанию равен assertEquals(actual, expected, message), тогда как JUnit - assertEquals(message, expected, actual) - но это самое большое.

Я бы сказал: выбери одну и попробуй. Напишите несколько тестов. Оба отлично работают с Selenium. Оба отлично работают с муравьем. Оба прекрасно работают с CruiseControl или Hudson. Обучение написанию хороших модульных тестов гораздо важнее, чем изучение определенного набора команд (в любом случае они очень похожи).

TestNG имеет больше возможностей и меньше ограничений, IMO, но это, конечно, дает вам больше возможностей ошибиться.

3 голосов
/ 22 сентября 2010

Если вы впервые, я бы порекомендовал JUnit.

Это был первый, самый популярный.Он хорошо документирован, имеет отличную поддержку инструментов и является метафорой, которая переведена - по крайней мере, на начальном этапе - на все языки (см. Реализации xUnit).Он должен хорошо работать для большинства проектов, и это хороший инструмент для понимания.Это будет хорошей отправной точкой для вас как для программиста.

Есть и другие особенности "альтернатив" - вот почему есть альтернативы - но часто это вопрос стиля больше, чем что-либо еще.TestNG может иметь несколько различных функций, но JUnit также развивался с такими функциями, как аннотации, альтернативные средства сопоставления и т. Д.

Да, JUnit будет отлично работать с Selenium, когда придет время.

0 голосов
/ 22 сентября 2010

Я работаю как JavaEE devel.Мы широко используем JUnit для тестирования наших модулей бизнес-логики. Это очень мощный и гибкий инструмент, и мы используем его HTML-отчет в официальных документах для выпуска в качестве доказательства качества.

0 голосов
/ 22 сентября 2010

JUnit и TestNG очень похожи, и когда вы знаете один из них, легко подобрать другой.

Основная причина, по которой я использую TestNG, - это группы тестов и зависимости тестов. Вы можете назначить тесты различным группам, а затем легко запустить все тесты в группе или исключить определенные тесты из группы. Например, если я хочу изолировать пару тестов, я могу просто добавить их в группу тестов "fahd" и затем запустить только эту группу. Зависимости тестов позволяют пропустить тесты, если зависимый тест не пройден. Вы можете подумать, что эти функции не очень важны, но как только вы их используете, вы удивитесь, как вы когда-либо жили без них.

0 голосов
/ 22 сентября 2010

Junit является самым популярным, он поддерживает плагины, поэтому лучше использовать его

0 голосов
/ 22 сентября 2010

Я всегда голосую за «как за всех», потому что: этот опыт в большинстве случаев более ценен, потому что там много информации, и, в частности, для jUnit, она портирована на многие языки, поэтому этот опыт будет"кросс-платформенный.

0 голосов
/ 22 сентября 2010

Комбинация TestNg и Unitils непобедима .. Этого хватило бы на все ваши требования ..

...