Ответ 1
Используйте @BeforeMethod, а не @BeforeTest.
Значение @BeforeTest объясняется в документации.
Я пытаюсь использовать @BeforeTest, чтобы получить код... запускать один раз перед каждым тестом.
Это мой код:
public class TestBase {
@BeforeTest
public void before() {
System.out.println("BeforeTest");
}
}
public class TestClass extends TestBase{
@Test
public void test1(){}
@Test
public void test2(){}
}
"BeforeTest" печатается только один раз, а не дважды. Что я делаю неправильно?
Используйте @BeforeMethod, а не @BeforeTest.
Значение @BeforeTest объясняется в документации.
"BeforeTest" печатается только один раз, а не дважды. Что я делаю неправильно?
*** К сожалению. Я не заметил, что вы написали @BeforeTest, но в вашем примере @BeforeTest почти равен @BeforeClass и лучше использовать @BeforeClass, если у вас уже нет тестовых классов.
@BeforeClass "должен быть объявлен в том же классе, что и ваши методы тестирования, а не иначе!
//Example
package test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class Tests {
private String bClass;
private String bMethod1;
private String bMethod2;
@BeforeClass
public void beforeClass() {
bClass = "BeforeClass was executed once for this class";
}
@BeforeMethod
public void beforeMetodTest1() {
bMethod1 = "It before method for test1";
}
@Test
public void test1() {
System.out.println(bClass);
System.out.println(bMethod1);
}
@BeforeMethod
public void beforeMethodTest2() {
bMethod2 = "It before method for test2";
}
@Test
public void test2() {
System.out.println(bClass);
System.out.println(bMethod2);
}
}
@BeforeClass будет выполняться один раз перед всеми вашими методами тестирования в этом классе. @BeforeMethod будет выполняться перед методом тестирования, перед которым он написан.
@BeforeClass может быть только одним в тестовом классе, в разнице @BeforeMethod! (Если это некоторый @BeforeClass, они выполняются по очереди, но это не правильный состав теста)
P.S. Извините за мой английский:)
Согласно documentation, метод, аннотированный с помощью @BeforeTest, запускается до запуска любого метода @Test, принадлежащего к классам внутри тега.
Из моего опыта:
Вы можете проверить это, установив простой пример.