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, но это, конечно, дает вам больше возможностей ошибиться.