我可以有多个仅针对它们所属的组运行的 @BeforeMethod 吗?

chr*_*isk 5 java testng automation

@BeforeMethod (groups={"a"})
public void setup1() {
    //do something
}

@BeforeMethod (groups={"b"})
public void setup2() {
    //do something else
}

@Test (groups={"a"})
public void Test1() {
    //do something
}

@Test (groups={"b"})
public void Test2() {
    //do something
}

@Test (groups={"a"})
public void Test3() {
    //do something
}

@Test (groups={"b"})
public void Test4() {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

而 xml 文件将类似于:

<run>
    <include name="a"/>
    <include name="b"/>
</run>
Run Code Online (Sandbox Code Playgroud)

是否可以仅在 Test1、Test3 之前运行 setup1,而在 Test2、Test4 之前仅运行 setup2?

nih*_*neo 4

您需要使用的是@BeforeGroups而不是@BeforeMethod。BeforeMethod 确保 setup1 和 setup2 都在每个方法之前运行。BeforeGroups 将确保它仅在特定组开始执行之前运行。