Разбираемся в анотации @Withtag

http://thucydides.info/docs/thucydides/_adding_tags_to_test_cases.html - эта глава описывает весьма полезное свойство. Задавать теги и в последствии запускать тесты только под определенными тегами.

Но к сожалению совсем не написано куда эти теги лепить. Где должна находится эта анотация? Могу ли я повесить один тег на весь класс, или это нужно каждому тесту под анотацией @Test писать анотацию @Withtag

Хочу разобраться, так как эта фича позволит группировать определенные тесты в наборы и запускать только их.

Если ставить @Withtag перед каждой анотацией @Test то все выходит круто!

Но это же так много кода. Хочу поставить 1 тег на весь класс, кто знает как это сделать?

Для этого надо просто поставить аннотацию @Withtag перед объявлением класса. И тогда тег будет применяться ко всем тестам из этого класса.

Плюс к этому можно для отдельного теста в этом классе задать какой-нибудь другой тег, поставив его перед или после (не важно в каком порядке идут аннотации) @Test, как вы и написали. Тогда тест будет запускаться по любому из указанных тегов. Таким образом можно сгруппировать тесты по нескольким критериям.

если ещё актуально, я делал так :

@WithTag("sregister")
@Test
public void Single() throws InterruptedException {
}

вызывал :

mvn verify -Dtags=sregister

выполняется, только выбраный :slight_smile: очень удобно :slight_smile:

Ну стоит тогда еще посмотреть дальше по документации, там есть интересующий код для того, чтобы разобраться как все работает http://thucydides.info/docs/thucydides/_using_thucydides_tags.html

А также можно просто пойти в сорцы и посмотреть юнит тесты на эту функциональность

И можно сразу заметить, что есть еще и @WithTagValuesOf

2 лайка

Не получается запустить тест командой mvn verify -Dtags=sregister.
В чем может быть ошибка?

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 1

[INFO]
[INFO] — maven-thucydides-plugin:0.9.269:aggregate (thucydides-reports) @ selenium-tests —
[INFO] Reading requirements from net.thucydides.core.requirements.FileSystemRequirementsTagProvider@155ff0a
[INFO] Reading requirements from net.thucydides.core.requirements.PackageAnnotationBasedTagProvider@a795de
[INFO] Requirements found:[]
[INFO] Generating release reports for: []
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.733 s

а можно сам тест увидеть? :slight_smile:

Да, конечно

public class SimpleTest extends TestBase{

    @WithTag("blabla")
    @Test
    public void bla(){
        Assertions.assertThat(true);
    }
}

Класс TestBase

@RunWith(ThucydidesRunner.class)
public class TestBase{   

    @Managed(uniqueSession = true, driver = "chrome")
    public WebDriver webdriver;

    @ManagedPages(defaultUrl = "http://www.wikipedia.org/")
    public Pages pages;

    @Steps
    protected UsrSteps user;

Выполняю команду mvn verify -Dtags=blabla но тест не запускается

хм…с .pom тоже никаких проблем?

Нужно ли как-то определять в .pom, что используется анотация @WithTag?
Сейчас для запуска разных наборов тестов использую @Category, который параметром определен в .pom

Внимательно читаем FAQ по форматированию кода.

Уберите / закоментируйте и посмотрите что выйдет

пример
есть 3 теста с 3мя разными тегами, можно при запуске мавену передавать 2 тага?
и если да то какой будет синтаксис?