如何在testng中禁用状态共享?

如何在testng中禁用状态共享?,testng,Testng,我想在testng测试中禁用状态共享。我想在每次调用testmethod时重新创建私有测试字段,就像在JUnit框架中一样。可能吗?或者我需要使用@BeforeMethods仔细地运行测试,它为每个方法重新初始化了测试类成员 p.S.另外,我想知道在tesng中@Before注释的目的是什么?如果我写这样的东西: public class Test { TestedObject object; @BeforeTest public void setUp(){

我想在testng测试中禁用状态共享。我想在每次调用testmethod时重新创建私有测试字段,就像在JUnit框架中一样。可能吗?或者我需要使用@BeforeMethods仔细地运行测试,它为每个方法重新初始化了测试类成员

p.S.另外,我想知道在tesng中@Before注释的目的是什么?如果我写这样的东西:

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() {
    ...
  }

}