gpt4 book ai didi

java - 如何在 TestNG 上的 @BeforeMethod 中添加分组和依赖关系

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:43 24 4
gpt4 key购买 nike

有没有办法在@Test上依赖@BeforeMethod,因为在我的场景中,不同的TestMethod有不同的设置,我需要一个依赖于TestMethod的设置。我在这里添加一些代码片段以便更好地理解

@BeforeMethod(groups = {"gp2"})
public void setUp1() {
System.out.println("SetUp 1 is done");
}

@BeforeMethod(groups = {"gp1"}, dependsOnGroups = {"tgp1"})
public void setUp2() {
System.out.println("SetUp 2 is done");
}

@Test(timeOut = 1, groups = {"tgp1"})
public void testMethod() throws InterruptedException {
Thread.sleep(2000);
System.out.println("TestMethod() From Group1");
}

@Test(dependsOnMethods = {"testMethod"}, groups = {"tgp2"})
public void anotherTestMethod() {
System.out.println("AnotherTestMethod()From Group1 and Group2");
}

输出

设置 1 已完成设置 2 已完成

但我需要执行 setUp1() 而不是 setUp2(),因为它取决于 tgp1 组

我观察到的另一件事是,如果我更改依赖关系

@BeforeMethod(groups = {"gp1"}, dependsOnGroups = {"tgp1"})

@BeforeMethod(groups = {"gp1"}, dependsOnMethods = {"testMethod"}) 

然后我得到了一个异常,例如

 setUp2() is depending on method public void testMethod() throws java.lang.InterruptedException, which is not annotated with @Test or not included.

我需要执行此步骤

SetUp1---->testMethod1()-------->SetUp2--------->testMethod2()

我需要这个,因为不同的 TestMethods 有不同的工作,并且它有不同的 SetUp()。

最佳答案

在您的情况下,您可以简单地从相应的测试方法中调用相应的 setUp 方法,因为每个测试确实没有通用的 @BeforeMethod

或者您可以将这两个测试分成不同的测试类,每个测试类都有一个@BeforeMethod

或者您可以使用一个 @BeforeMethod 方法根据测试方法名称进行条件设置调用,如下所示。这里@BeforeMethod可以声明一个java.lang.reflect.Method类型的参数。该参数将接收该@BeforeMethod完成后将调用的测试方法

@BeforeMethod
public void setUp(Method method) {
if (method.getName().equals("testMethod")) {
setUp1();
} else if (method.getName().equals("anotherTestMethod")) {
setUp2();
}
}

public void setUp2() {
System.out.println("SetUp 2 is done");
}

public void setUp1() {
System.out.println("SetUp 1 is done");
}

关于java - 如何在 TestNG 上的 @BeforeMethod 中添加分组和依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22497513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com