Я создатель TestNG и автор книги «Тестирование следующего поколения», так что вот несколько (очевидно предвзятых) мыслей.
Для функционального (или сквозного / интеграционного / системного, какой бы термин вы ни выбрали) TestNG предлагает несколько функций, которых нет в JUnit и которые пользователи сочли очень полезными:
Группы. После того, как вы скомпилировали свои тесты, вы можете просто попросить TestNG запустить все «интерфейсные» тесты или «быстрые», «медленные», «базы данных» и т. Д.
Поддержка многопоточного тестирования. Это имеет два разных значения:
1) Вы можете указать TestNG запускать все ваши тесты одновременно в пулах потоков, которые вы определяете (изменение одной строки в XML-файле). Это очень гибко настраивается, так что тесты, которые не являются многопоточными, по-прежнему могут выполняться в однопоточном режиме.
2) Вы можете указать TestNG вызвать ваши тестовые методы n раз из p потоков. Это дает вам хорошее представление о том, насколько потокобезопасен тестируемый код.
Еще одно непосредственное преимущество тестовых зависимостей заключается в том, что TestNG может сказать вам «1 метод не удался, 99 методов пропущены», что является гораздо более точным результатом, чем «100 методов не удалось».
TestNG имеет много-много дополнительных функций, и я рад ответить на вопросы здесь или в нашем списке рассылки ( http://groups.google.com/group/testng-users ).
Я бы изучил TestNG с Unitils . Всегда удовлетворял все мои потребности. Добавьте XMLUnit и DBUnit и надолго у вас должно устояться.
Честно говоря, JUnit намного популярнее TestNG, по крайней мере, здесь, где я работаю и живу. Я знаю, что это может быть странный аргумент, но на вашем месте я бы просмотрел несколько объявлений о вакансиях и посмотрел, какая инфраструктура подходит для отрасли в вашем регионе / стране (например, из-за этого я выбираю JUnit, я имею в виду Я уверен, что смогу изучить TestNG, возможно, он окажется лучше, но какая польза от этого для меня, если все работодатели потребуют знания JUnit?).
Хотя это может показаться мелким критерием, при прочих равных, похоже, что тенденции в сфере занятости в значительной степени благоприятствуют JUnit.
Я использовал оба и обнаружил, что для модульного тестирования очень хорошо работает только jUnit, но с точки зрения тестирования системы я бы порекомендовал TestNG. TestNG предлагает несколько дополнительных функций (например, параметрическое тестирование) и очень гибок. Например, в jUnit сбой одного теста в наборе обычно означает, что вам нужно повторно запустить весь набор, но в TestNG вы можете просто перезапустить тест, который не прошел. Вот действительно хорошая статья, описывающая и то, и другое (хотя она немного смещена в сторону TestNG)
http://www.ibm.com/developerworks/java/library/j-cq08296/index.html
Оба выполняют свою работу одинаково хорошо, поэтому нет правильного или неправильного. Вы можете использовать и то, и другое в сочетании с многочисленными фреймворками для поддержки вашего развития.
Если вам нужно работать на клиента, вы можете узнать того, которым вы, как ожидается, будете пользоваться. Если нет, лучше всего попробовать их оба и выяснить, что лучше всего подходит для вас.
JUnit очень хорошо поддерживается во многих IDE, включая Eclipse, а JUnit 4 с аннотациями - довольно приятно работать.
Если у вас нет особых потребностей, обратитесь за помощью к инструментам, например jUnit.
TestNG с Unitils - это действительно здорово. Он покрывает почти все требования. Unitils поддерживает множество утилит утверждения, Spring, Hibernate, mocking-фреймворки, dbutils и т.д.
Джунит - лучшее место для начала. Junit 4.x имеет множество разнообразных функций, таких как аннотации и т. Д., А также получает хорошую поддержку со стороны популярных фреймворков, таких как Spring.
Для меня это просто вопрос вкуса. Я лично использую jUnit ежедневно более 5 лет, и я очень доволен им, особенно последней версией и ее функцией @Rule, которая не позволяет моей команде писать один и тот же код снова и снова. Он хорошо интегрируется со всеми инструментами, которые я использую ежедневно: IDE, сборка, непрерывная интеграция ...
Junit является известным и лучшим инструментом модульного тестирования, я думаю, вы и я оба знаем, что Junit настолько важен, что Java-разработчик меняет свой шаблон кодирования в качестве вклада в junit. Вы можете немного изучить Junit как базовый модуль технологии тестирования, а также изучить testng как вторую технологию модульного тестирования.
Следующая ссылка может быть вам полезна! http://www.javarmi.com/2010/08/junit-4-tutorial-and-example-get-starting/