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);
}
基类:
公共类测试库{
public int var = 0;
@BeforeGroups(value = { "group1", "group2" })
void initialize() {
System.out.println("Before group");
var = 1;
}
}
我需要initialize()
方法在'test1()'和'test2()'之前单独执行。变量var
的值仅在这些方法中使用。
预期产出:
测试:组前
Test1值:1
Test3值:0
测试:组前
Test2值:1
但是使用上面的代码,test2中var的值也是0。如何修复属于group1和group2组的方法初始化变量的代码?
答复:
var
设置为public
全局变量
但在你的测试套件中几乎没有什么东西,
var
,该怎么办
如果这两个问题的答案都是,在几次测试中获取var
值,那么您可以考虑使用TestNG
将参数传递给使用TestNG
注释之一注释的方法的能力。
这样你的代码看起来更干净、更沉稳。您可以看看如何在TestNG中提供参数?
首先,TestNG通过子类创建一个实例,其中var
为0。
然后,它只在之前创建的一个实例上调用@BeforeGroup
一次。
如果TestNG按预期工作,您应该在某处找到var=1
。如果希望在所有实例中共享值,可以使用静态
变量,或者更好地使用测试上下文:http://testng.org/doc/documentation-main.html#native-依赖注入和http://testng.org/javadocs/org/testng/ITestContext.html
这就是你想要的吗:
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() {
}
}
输出:
在组之前运行
在组之前运行变量为:1的test1
在组之前运行
在变量为:1的test2
通过:test1
通过:test2
=========================================================================
默认测试
我想为基本测试数据位置设置一个全局变量,它可以在我的所有功能文件中使用。在karate-config.js中,我做了以下更改- var config={env:env,input_json_path:'com/company/project/module/testdata'} 在我的特写文件里,我试着用它- 当方法POST Then状态400时,给定路径“/MyService”和请求读取('cla
我在使用GetCircleArea()方法时遇到问题。请帮忙。我坐在这里,不知道该怎么办了。 非常感谢。寻找答案!
我有任务加载类别(按名称加载)和子类别中的所有产品。使用MySQL后,我创建了SQL查询: 正如你在类别名称中提到的“工具”。它工作得很好,但如果你有任何建议-你非常欢迎。在我的项目中,我正在使用Hibernate,名为Query。问题在于变量@pv。现在它未被编译,并将异常作为“意外令牌…”抛出有人知道如何在NamedQuery中使用变量吗?
我在xslt中需要这个,但是xmlns:s=“{$service-uri}”没有提取: 如何提取名称空间定义中的service-uri变量?扎梅克
问题内容: 考虑以下 几乎可 编译的Java 8代码: 您会注意到抛出编译器错误: 变量用户已在方法main(String [])中定义 我的问题是:为什么Lambda表达式会考虑与已经定义的Lambda表达式在同一行 初始化 的变量?我知道Lambda会在外部查找(并使用)局部变量,因此您不能将在Lambda内部使用的变量命名为与外部变量相同。但是为什么 要 定义的变量 被 认为 已经 定义?
我是Gradle的新手,正在尝试通过gradle.properties文件创建一个可配置的变量。 为此,我创建了一个渐变。属性,并定义了如下生成目录: 在我的文件中,我引用了这样的变量: 这不起作用。如果我将替换为中的字符串,它会构建到正确的位置。为什么会发生这种情况? 以下是完整的build.gradle文件: