我正在尝试使用@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的含义在the documentation中进行了解释。
“ 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。对不起,我的英语:)
根据documentation,在运行属于标记内部类的任何@Test方法之前,运行带有@BeforeTest注释的方法。
根据我的经验:
您可以通过设置一个简单的示例进行测试。
如果使用@beforeTest,则该方法将在每个<test>
的开头运行一次(我们在测试服xml文件中指定)如果该测试包含该类