Pull to refresh

Общий API для JUnit и TestNG

Reading time2 min
Views4.5K
Представим себе ситуацию, когда есть написанные тесты на JUnit`е и все работает отлично (ну хотя бы тесты написаны).
Но появляется чудо-идея, что TestNG был бы для этих тестов удобнее. Не будем вдаваться в холивар, какой из фреймворков лучше, круче или удобнее. Но факт в том, что API у них разный.

Конечно заменить поиском assertArrayEquals на assertEquals несложно.
Но менять позицию сообщения для падающего теста уже сложнее, тут нужно править ручками.
Не знаю, насколько актуальна эта проблема, но я с ней сталкивался много раз.

Так появилась шальная мысль — написать простенькую либу, с помощью которой поменять фреймворк можно без особой головной боли.

Я набросал примерный вариант того, как оно может выглядеть и предлагаю это на обсуждение.
API выглядит следующим образом:
usingTestNG.assertEquals( "Strings are not equal", "expected", "actual" );
usingJUnit.assertEquals( "Strings are not equal", "expected", "actual" );

Или можно использовать дефолтный:
usingDefault.assertEquals( "Strings are not equal", "expected", "actual" );

В таком случае, либа попробует использовать TestNG. Если его нет в класспасе, то будет использоваться JUnit.

Для интерфейса самих вызовов взят JUnit`овский, но это вопрос спорный. Мне он более привычный и это субъективно. Возможно есть смысл добавить оба варианта.

В общем, давайте обсуждать потребность в этой либе, сталкивался ли кто-то с такой проблемой. Может быть это очередной велосипед.

Update1.
Спасибо всем за отзывы! Составил небольшой роадмап на ближайшее время:
— Добавить slf4j-like инициализацию тестов;
— Зарефакторить поудачнее API для static import`а;
— Добавить Fest-asserts like API;
— Добавить TestNG like API;
— Добавить прокси для JUnit и TestNG аннотаций. Если фреймворк, на который ссылается тест, отсутсвует, то должно выскакивать предупреждение или происходить падение во время запуска тестов в зависимости от критичности.
— Добавить прокси для листенеров JUnit и TestNG. Как и с ассертами, листенеры взаимозаменяемые, поэтому должны работать, если есть любая из либ.

Буду очень рад и благодарен, если у кого-нибудь найдется время на еще какие-нибудь мысли.
Only registered users can participate in poll. Log in, please.
Каким тестовым фреймворком Вы пользуетесь?
55.81% JUnit мой родной48
24.42% TestNG. Люблю группы21
4.65% Только assert, только хардкор4
4.65% Есть вариант круче (напишу в комментах)4
12.79% Тесты? Нет, не слышал, это для лузеров11
5.81% Я тестирую только компилятор5
86 users voted. 29 users abstained.
Tags:
Hubs:
+5
Comments15

Articles

Change theme settings