Как получить имя выполняемого JUnit TestSuite

webdriver
java
junit
Теги: #<Tag:0x00007fedb863b1d8> #<Tag:0x00007fedb863b098> #<Tag:0x00007fedb863af58>

(Дмитрий Кочнев) #1

Здравствуйте.
Имеются наборы сьютов (в одной папке) с тестами WebDriver. Они запускаются все сразу через дженкинс и maven одной командой mvn clean test. Задача - достать имя текущего выполняемого сьюта (для логов). В случае запуска одного сьюта можно было передавать имя сьюта через свойство argLine, но при запуске группой мне никаких переменных неизвестно. Кто-нибудь может помочь? Спасибо.


(sidelnikovmike) #2

Можно написать Rule, а внутри него достаточно просто взять и имя запускаемого теста, и имя сьюта.


(Sined1993) #3

Полагаю, что вы уже нашли ответ, но все же. Так можно получить имя теста

public class BlaBlaBla{
@Rule
public TestName testName = new TestName();

@Test
public void megaTest(){
System.out.println(testName.getMethodName());
}

}


(Евгений Тимошенко) #4

Возможно это неудачный вариант, но на всякий случай предложу )
Thread.currentThread().getStackTrace(). Из стека можно вытянуть класс с которого запускали. Я использовал такую методику чтобы вытягивать имя выполняемого теста

По поводу Rule – да, таким образом тоже можно много интересных штук сделать. Тоже использую )


(Евгений Тимошенко) #5

Ещё один вариант: в java класс ThreadLocal. Можно в сюите запустить метод:
@BeforeClass
public static void setSuiteNameValue() {
MyClassWithThreadLocalField.setSuiteValue(“MyClassName”)
}
А в том классе определить статик филд private static final ThreadLocal suiteValue = new ThreadLocal<>();
Так как это поле будет выдавать своё значение исходя из потока, то таким образом вы cможете понять из какого сюита запустился тест