我正在尝试使用@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”仅打印一次,而不是两次。我做错了什么?
答案 0 :(得分:44)
使用@BeforeMethod,而不是@BeforeTest。
@BeforeTest的含义在the documentation中解释。
答案 1 :(得分:3)
“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's before method for test1";
}
@Test
public void test1() {
System.out.println(bClass);
System.out.println(bMethod1);
}
@BeforeMethod
public void beforeMethodTest2() {
bMethod2 = "It's before method for test2";
}
@Test
public void test2() {
System.out.println(bClass);
System.out.println(bMethod2);
}
}
@BeforeClass将在此类中的所有测试方法之前执行一次。 @BeforeMethod将在测试方法之前执行,在此之前编写它。
@BeforeClass可能只是测试类中的一个,区别在于@BeforeMethod!(如果它是@BeforeClass,它们是轮流执行的,但它不是测试的正确组成)
P.S。对不起我的英文:)
答案 2 :(得分:2)
根据documentation,在运行属于标记内部类的任何@Test方法之前,运行使用@BeforeTest注释的方法。
根据我的经验:
你可以通过设置一个简单的例子来测试它。
答案 3 :(得分:0)
如果您使用@beforeTest,则该方法将在每个<test>
(我们在测试服xml文件中指定)的开头运行一次。如果该测试包含该类 >
<test>
中所有类中的所有@befortests 将在该测试开始时执行