I have 3 `@Test` methods in three different classes that extends one base class.
测试1:
@Test(groups = "group1")
public void test1() {
System.out.println("Test1 value : " + var);
}
测试2:
@Test(groups = "group2",dependsOnGroups={"group1"})
public void test2() {
System.out.println("Test2 value : " + var);
}
测试3:
@Test
public void test3() {
System.out.println("Test3 value : " + var);
}
基类:
公共类TestBase {
public int var = 0;
@BeforeGroups(value = { "group1", "group2" })
void initialize() {
System.out.println("Before group");
var = 1;
}
}
我需要在{test1()'和'test2()'之前执行initialize()
方法。变量var
的值仅用于这些方法。
预期产出:
测试:在小组之前
Test1值:1
Test3值:0
测试:在小组之前
Test2值:1
但是使用上面的代码,test2中var的值也是0。 如何修复代码以初始化属于组group1和group2的方法的变量?
答案 0 :(得分:1)
这就是你想要的:
package practise;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
class TestBase {
public int var = 0;
@BeforeGroups(value = { "group1", "group2" })
void initialize() {
System.out.println("Running Before group");
var = 1;
}
}
/**
* @author mrunal
*
*/
public class SO39910848 extends TestBase {
@Test(groups = "group1")
public void test1() {
System.out.println("Running test1 with value of var as: " + var);
}
@Test(groups = "group2",dependsOnGroups={"group1"})
public void test2() {
System.out.println("Running test2 with value of var as: " + var);
}
public void test3() {
}
}
输出:
在组之前运行
运行test1,其值为var:1
运行 在组之前运行test2,其值为var:1
通过:test1
通过:test2===============================================
默认测试测试运行:2,失败:0,跳过:0
===============================================
默认套件
总测试运行:2,故障:0,跳过:0
答案 1 :(得分:1)
首先,TestNG按子类创建一个实例,var
为0。
然后,它只在它之前创建的一个实例上调用@BeforeGroups
一次。
如果TestNG按预期工作,您应该在某处找到var=1
。
如果您希望在所有实例中共享值,则可以使用static
var,或者更好地使用测试上下文:http://testng.org/doc/documentation-main.html#native-dependency-injection和http://testng.org/javadocs/org/testng/ITestContext.html
答案 2 :(得分:0)
答案:
var
设为public
个全局变量。var
方法中的@BeforeGroups
分配值。var
。但是您的测试套件上的设置很少,
var
,该怎么办?如果两个问题的答案都是,为了在少数测试中获得var
值,那么您可以考虑使用TestNG
将参数传递给使用{{{{1}之一注释的方法的功能1}}注释。
通过这种方式,您的代码看起来会更清晰,更清晰。您可以查看How to supply parameters in TestNG?