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


(heartwilltell) #1

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

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

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


(heartwilltell) #2

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

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


(Yulia Antifeeva) #3

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

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


(Руслан) #4

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

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

вызывал :

mvn verify -Dtags=sregister

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


(Mykhailo Poliarush) #5

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

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

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


(Yeahkaterina) #6

Не получается запустить тест командой 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


(Руслан) #7

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


(Yeahkaterina) #8

Да, конечно

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 но тест не запускается


(Руслан) #9

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


(Yeahkaterina) #10

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


(Sergey Korol) #11

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


(heartwilltell) #12

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


(Ramon Menezes) #13

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