Модульное тестирование: JUnit VS TestNG
#1
Отправлено 21 апреля 2009 - 09:05
Помогите, пожалуйста, новичку с чисто практическим вопросом:
Считается, что Java-разработчики могут легко тестировать свои методы при помощи JUnit.
1. Может ли кто-то компакто по пунктам популярно объяснить, по каким причинам следует использовать взамен JUnit пакет TestNG?
а. Наверняка это будут моменты, связанные с его совместным использованием с Selenium для тестирования веб-приложений.
б. Второе, может быть, возможность отдельного хранения тестовых данных. Это то, что я как новичок обнаружил.
А что есть еще интересного в TestNG, позволяющее остановить выбор именно в его пользу?
2. И еще один вопрос: бытует мнение, что использование языка Groovy облегчает разработку и использование модульных тестов совместно с JUnit. Так ли это интересно, что стоит дополнительного изучения и последующего использования?
Большое спасибо за Ваши ответы и замечания.
#2
Отправлено 22 апреля 2009 - 08:29
Я бы на вашем месте сначала обьяснил цель вашей автоматизации и типы тестов, которые вы хотите писать. Совмещать можно что угодно, тут некоторые IBM со студией, например , совмещают. Для какие целей тесты собственно говоря ?Добрый день, уважаемые коллеги!
Помогите, пожалуйста, новичку с чисто практическим вопросом:
Считается, что Java-разработчики могут легко тестировать свои методы при помощи JUnit.
1. Может ли кто-то компакто по пунктам популярно объяснить, по каким причинам следует использовать взамен JUnit пакет TestNG?
а. Наверняка это будут моменты, связанные с его совместным использованием с Selenium для тестирования веб-приложений.
б. Второе, может быть, возможность отдельного хранения тестовых данных. Это то, что я как новичок обнаружил.
А что есть еще интересного в TestNG, позволяющее остановить выбор именно в его пользу?
2. И еще один вопрос: бытует мнение, что использование языка Groovy облегчает разработку и использование модульных тестов совместно с JUnit. Так ли это интересно, что стоит дополнительного изучения и последующего использования?
Большое спасибо за Ваши ответы и замечания.
#3
Отправлено 22 апреля 2009 - 10:42
Как-то давно я исследовал применимость JUnit/TestNG вместе с Selenium, TestNG мне больше понравился. Почему я не помню.
2. Это мнение имеет под собой основания.
Если вам нужно писать именно модульные тесты, то их наверняка пишут разработчики. Тут есть два варианта:
а) они захотят учить второй язык
б) они не захотят его учить
Мне кажется для модульных тестов, которые пишут разработчики все равно какой вариант, им виднее.
Если же тесты будут писать тестировщики (я надеююсь это будут не модульные тесты?) тогда Groovy лучше и проще т.к. это динамический язык, без синтаксического overhead, с клевыми фичами, которых нет даже в Java.
Сравните
println "Hello, World!"В Groovy и то, что необходимо написать в Java для того же результата.
Если надо кого-то обучать программировать с нуля или с небольшого старта, то мне кажется, Groovy в частности и динамические языки вообще, это отличный способ.
А если ваши тестировщики уже пишут на java и полет нормальный, зачем что-то менять?
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#4
Отправлено 22 апреля 2009 - 11:26
Еще вчера удалось найти вот эту интересную статью, которая мне немного прояснила ситуацию.
2. У нас такая ситуация, часть разработчиков (работающих на одних хозяев) использует некий коммерческий тестовый фреймворк, базирующийся на groovy-unit тестах. Специфика среды такая, что легко тестируются там также и GUI-интерфейсы. Вторая часть разработчиков (работающая в других проектах) используют junit. Вот и возникает вопрос, стоит ли перенимать практику первых (но речь идет не о среде, а только о Груви как средстве), то есть позволит ли такая методика далее после освоения Груви сократить время разработчикам на модульное тестирование, или лучше не дергаться и идти в старом русле. Также речь тут же идет и о TestNG как возможном альтернативном варианте, в связи с чем и был первый вопрос. Знаю, что многие также комбинируют TestNG и JUnit в работе, так как типа JUnit вместе со своими расширениями (например StrutsTestCase) смотрятся более рационально, чем сам TestNG. В связи с этим и возникли мои вопросы.
P.S. Наши другие проекты связаны в основном с ява-клиент-серверными приложениями в области логистики, работающими с базами оракл.
#5
Отправлено 22 апреля 2009 - 13:17
Чем хорош JUnit? Тем, что он есть везде, встроен во все среды разработки, средства автоматизации сборки, непрерывной интеграции, и т.п. Поэтому не надо предпринимать никаких дополнительных действий по развёртыванию и встраиванию TestNG в какое-нибудь хитрое место (типа фейковый EJB- или сервлет-контейнер). Если это хитрое место хитро работает с класс-лоадерами, в этом случае есть шанс, что TestNG вообще без модификации не взлетит. У меня были случаи, когда тесты на TestNG не запускались из-за того, что в проекте использовалась какая-то навороченная библиотека для динамической генерации запросов к БД. В общем, если у вас сложная конфигурация и/или окружение, есть вероятность того, что TestNG не взлелит.
Чем хорош TestNG? Фичами. Их там гораздо больше, чем в JUnit, даже с учётом наличия разных расширений (да, есть возможность и в JUnit сделать параметризованные тесты или зависимости, но это требует дополнительных усилиий). Но некоторые фичи в TestNG работают не совсем так, как ожидается. Ну или документировано не совсем так, как работает :)
Ещё в JUnit есть потрясающая штука @RunWith, которой нет в TestNG, но это совершенно отдельная история...
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#6
Отправлено 22 апреля 2009 - 14:09
Пробую подвести итог:
Значит, я понимаю, что JUnit и TestNG интереснее комбинировать, и в зависимости от специфики приложений (или фичей в приложении) выбирать в качестве основопологающего фактора при development testing.
Теперь это будет легче объяснить руководству и указать несколько примеров, где что лучше работает.
То же будет касаться и использования скриптовых языков при тестировании.
Большое спасибо, коллеги! Поправьте меня, если я серьезно неправ.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных