如何在testng中禁用状态共享?
我想在testng测试中禁用状态共享。我想在每次调用testmethod时重新创建私有测试字段,就像在JUnit框架中一样。可能吗?或者我需要使用@BeforeMethods仔细地运行测试,它为每个方法重新初始化了测试类成员 p.S.另外,我想知道在tesng中@Before注释的目的是什么?如果我写这样的东西:如何在testng中禁用状态共享?,testng,Testng,我想在testng测试中禁用状态共享。我想在每次调用testmethod时重新创建私有测试字段,就像在JUnit框架中一样。可能吗?或者我需要使用@BeforeMethods仔细地运行测试,它为每个方法重新初始化了测试类成员 p.S.另外,我想知道在tesng中@Before注释的目的是什么?如果我写这样的东西: public class Test { TestedObject object; @BeforeTest public void setUp(){
public class Test {
TestedObject object;
@BeforeTest
public void setUp(){
object = new TestedObject();
}
@Test
public void test1(){
object.setFieldA(1);
Assert.assertEquals(object.calculate(), 10);
}
@Test
public void test1(){
object.setFieldB(1);
Assert.assertEquals(object.calculate(), 10);
}
}
public class TestedObject {
//default values
int a = 10;
int b = 10;
public void setFieldA (int a) {
this.a = a;
}
public void setFieldB (int b) {
this.b = b;
}
public int caculate(){
return a*b;
}
}
我必须创建另一个方法,并在每次手动运行它,以确保创建新实例。还有其他更简洁的方法吗?请使用
@BeforeTest
而不是@BeforeTest
,并且该带注释的方法将在每个测试方法之前运行,因此您将得到您想要的。您的最佳选择将是@BeforeClass
和@beforethod
来配置您的测试实例。其他@BeforeTest注释使用起来相当棘手,因为它们不一定针对测试类的每个实例执行(@BeforeTest,@BeforeGroup
)
好的,但是我怎样才能结合几种方法呢?如果我想添加BeforeGroups方法怎么办?@Cherry您可以这样使用:
@BeforeGroups(groups={“testMethodName1”、“testMethodName2”})
在setUp()方法上。您可以使用@BeforeGroups注释任意多个设置方法,并选择不同的方法。是的,但我希望确保在我可以测试1之后,调用test2时状态更改不会受到影响。所以想要这样的链:@BeforeClass
-创建了新实例,@BeforeGroup
设置了几个属性,testMethod-test;下一步的方法都是一样的。但是,当我开始使用@BeforeMethod
创建新实例时,在方法消失之前,其他@方法的所有好处都消失了,我必须在一个@BeforeMethod
中执行所有操作,以确保独立性。有没有一种方法可以在注释之前使用多个测试并使测试独立?
public class Test {
@BeforeClass
public void runBeforeFirstTestDefinedInClass() {
...
}
@BeforeMethod
public void runBeforeEachTestMethodExecution() {
...
}
@Test
public void testSomething() {
...
}
@AfterMethod
public void runAfterEachExecutedTestMethod() {
...
}
}