Подтвердить что ты не робот

Какая платформа UnitTest теперь будет изучаться для Java?

Хотя я запрограммировал Java на протяжении примерно 3 лет + теперь (не ежедневно, но, по крайней мере, я понимаю основы), на самом деле не пришел в поле Unit Testing...

Моя работа теперь больше ориентирована на тестирование/анализ проблем, поэтому я считаю, что хорошая платформа тестирования модулей Java будет весьма полезна для этой роли.

Очевидно, что в моей команде нет формального правила, с которым можно работать. Так что просто интересно, как новичок, какая основа хорошая, чтобы начать быстро?

Junit?

TestNG?

или что-то еще?

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

4b9b3361

Ответ 1

Я создатель TestNG и автор книги "Тестирование следующего поколения", так что вот несколько (явно предвзятых) мыслей.

Для функционального (или от конца до конца/интеграции/системы, любого термина, который вы предпочитаете) тестирование, TestNG предлагает несколько функций, которые JUnit не имеет и что пользователи нашли очень полезным:

  • Группа. После того, как вы скомпилировали свои тесты, вы можете просто попросить TestNG запустить все "интерфейсные" тесты или "быстро", "медленно", "базу данных" и т.д.

  • Поддержка многопоточного тестирования. Это имеет два разных значения:

1) Вы можете сказать, что TestNG запускает все ваши тесты одновременно в пулах потоков, которые вы определяете (одно изменение строки в файле XML). Это очень настраивается, поэтому тесты, которые не являются многопоточными, все равно могут выполняться в отдельных потоках.

2) Вы можете сказать, что TestNG вызывает ваши методы тестирования n раз из p-потоков. Это дает вам представление о том, насколько безопасен поток кода, который вы тестируете.

  • Проверить зависимости и детерминированный порядок. Это очень полезно для тестирования интеграции, где очень распространено мнение о методах тестирования, которым необходимы предшествующие методы тестирования, прежде чем они смогут даже запустить. TestNG очень популярен в сообществе Selenium по этой конкретной причине ( "не утруждайте себя тестированием этой страницы моего веб-сайта, если тест входа не прошел" ).

Еще одно непосредственное преимущество тестовых зависимостей заключается в том, что TestNG может сказать вам: "1 метод не прошел, 99 методов пропущены", что является гораздо более точным результатом, чем "100 методов не удалось".

TestNG имеет много и много функций, и я с удовольствием отвечаю на вопросы здесь или в нашем рассылке (http://groups.google.com/group/testng-users).

Ответ 2

Я бы изучил TestNG с помощью Unitils. Все это время я покрывал все свои потребности. Добавьте XMLUnit и DBUnit, и вы должны быть урегулированы в течение длительного времени.

Ответ 3

Честно говоря, JUnit более популярен, чем TestNG, по крайней мере здесь, где я работаю и живу. Я знаю, что это может быть странным аргументом, но если бы я был вами, я бы просканировал некоторые дополнения к работе и посмотрел, какая инфраструктура поддерживает отрасль в вашей области/стране (например, я собираюсь в JUnit из-за этого, я имею в виду конечно, я мог бы изучить TestNG, это может оказаться лучше, но что бы это было полезно для меня, если все работодатели требуют знания JUnit?).

Ответ 4

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

http://www.indeed.com/jobtrends?q=TestNG%2C+JUnit&l=

Ответ 5

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

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

Ответ 6

Я использовал оба и обнаружил, что для модульного тестирования только jUnit работает очень хорошо, но с точки зрения тестирования системы я бы рекомендовал TestNG. TestNG предлагает несколько дополнительных функций (например, параметрическое тестирование) и обладает высокой гибкостью. Например, в jUnit один тест, сбой в пакете, обычно означает, что вам нужно повторно запустить весь пакет, но в TestNG вы можете просто повторить тест, который не прошел. Heres действительно хорошая статья, излагающая оба (немного немного предвзятая к TestNG)

http://www.ibm.com/developerworks/java/library/j-cq08296/index.html

Ответ 7

JUnit очень хорошо поддерживается во многих IDE, включая Eclipse, а JUnit 4 с аннотациями неплохо работать.

Если у вас нет конкретных требований, обратитесь за поддержкой инструмента, то есть jUnit.

Ответ 8

TestNG с Unitils действительно замечательный. Он охватывает почти все требования. Unitils поддерживают множество утилит утверждения, Spring, Hibernate, mocking frameworks, dbutils и т.д.

Ответ 9

Для меня это просто вопрос вкуса. Я лично использовал jUnit ежедневно более 5 лет, и я очень доволен этим, особенно с последней версией и функцией @Rule, которая мешает моей команде повторять один и тот же код снова и снова. Он хорошо интегрируется со всеми инструментами, которые я использую ежедневно: IDE, сборка, непрерывная интеграция...

Ответ 10

Junit - это знаменитые и лучшие инструменты unit test, я думаю, что вы и я оба знаем, что Junit настолько важен, что разработчик Java меняет свою модель кодирования как вклад junit. Вы можете изучить некоторые Junit в качестве базовой технологии unit test, а также Изучите testng как вторую технологию unit test.

Следующая ссылка может быть вам полезна! http://www.javarmi.com/2010/08/junit-4-tutorial-and-example-get-starting/

Ответ 11

Я бы пошел на JUnit.

Ответ 12

Junit - лучшее место для начала. Junit 4.x имеет множество богатых функций, таких как аннотации и т.д., А также получает хорошую поддержку от популярных фреймворков, таких как Spring.