JUnit vs TestNG - PullRequest
       107

JUnit vs TestNG

117 голосов
/ 09 августа 2008

На работе мы все еще используем JUnit 3 для запуска наших тестов. Мы рассматривали возможность перехода на JUnit 4 для написания новых тестов, но я некоторое время следил за TestNG. Какой у вас был опыт работы с JUnit 4 или TestNG, и который, кажется, работает лучше для очень большого количества тестов? Гибкость в написании тестов также важна для нас, поскольку наши функциональные тесты охватывают широкий аспект и должны быть написаны различными способами, чтобы получить результаты.

Старые тесты не будут переписываться, поскольку они отлично справляются со своей работой. Что я хотел бы видеть в новых тестах, так это гибкость в способах написания теста, естественные утверждения, группировка и легко распределенные выполнения теста.

Ответы [ 14 ]

3 голосов
/ 06 апреля 2014

Мое мнение о том, что делает TestNG действительно более мощным:

1.  JUnit still requires the before/after class methods to be static, which limits
    what you can do prior to the running of tests, TestNG never has this issue.

2.  TestNG @Configuration methods can all take an optional argument to their 
    annotated methods in the form of a ITestResult, XmlTest, Method, or 
    ITestContext.  This allows you to pass things around that JUnit wouldn't 
    provide you.  JUnit only does this in listeners and it is limited in use.

3.  TestNG comes with some pre-made report generation classes that you can copy
     and edit and make into your own beautiful test output with very little 
     effort. Just copy the report class into your project and add a listener 
     to run it.  Also, ReportNG is available.

4.  TestNG has a handful of nice listeners that you can hook onto so you can do
     additional AOP style magic at certain phases during testing.
3 голосов
/ 12 июня 2013

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

Хорошо, во-первых, JUnit играла в догонялки с TestNG с точки зрения функциональности, они преодолели разрыв с V4, но, на мой взгляд, недостаточно хорошо. Такие вещи, как аннотации и поставщики данных, все еще намного лучше в TestNG. Кроме того, они более гибки с точки зрения выполнения теста, поскольку TestNG имеет тестовую зависимость, группировку и упорядочение.

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

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

Теперь о том, что я считаю, является отдельной проблемой, как писать хорошо структурированные, читаемые и поддерживаемые тесты. Я уверен, что большинство из этого вы знаете, но такие вещи, как Фабричный шаблон , Командный шаблон и PageObjects (если вы тестируете сайты) очень важны, это очень важно иметь уровень абстракции между тем, что вы тестируете (SUT) и что такое реальный тест (утверждения бизнес-логики). Чтобы иметь более хорошие утверждения, вы можете использовать Hamcrest . Используйте наследование / интерфейсы javas, чтобы уменьшить количество повторений и обеспечить общность.

Почти забыл, также используйте Test Data Builder Pattern , это в сочетании с аннотацией поставщика данных TestNG очень полезно.

3 голосов
/ 06 февраля 2013

Мне нравится аккуратная и простая интеграция TestNG с Guice.

1 голос
/ 23 января 2019

оба почти одинаковы. TestNG имеет некоторые дополнительные функции, такие как тестовые костюмы и зависимость. пожалуйста, найдите прилагаемый скриншот, чтобы получить полное сравнение. полное сравнение Juni5 и TestNG

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