gpt4 book ai didi

java - TestNG - 扩展类时 @Factory 和 @DataProvider 未运行

转载 作者:行者123 更新时间:2023-12-02 09:34:47 24 4
gpt4 key购买 nike

这里,期望在扩展类时运行 @Factory 和 @DataProvider 方法。

下面的示例使用 Factory 和 DataProvider 注释并且按预期工作。

import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;

public class DataProviderFactory {

protected String name;

public DataProviderFactory() {
super();
}

@Factory(dataProvider = "dp")
public DataProviderFactory(String name) {
System.out.println("Inside Factory");
this.name = name;
}

@DataProvider(name = "dp")
public Object[][] dataProvider() {
System.out.println("Inside Data Provider");
return new Object[][] {
{"Data1"}, {"Data2"}
};
}

@Test
public void method1() {
System.out.println("Method 1: " + name);
}

@Test
public void method2() {
System.out.println("Method 2: " + name);
}
}

上述输出是预期的。

[RemoteTestNG] detected TestNG version 7.0.0
Inside Data Provider
Inside Factory
Inside Factory
Method 1: Data1
Method 1: Data2
Method 2: Data1
Method 2: Data2

这里,上面的类被扩展如下。

import org.testng.annotations.Test;

public class DataProviderFactoryTest extends DataProviderFactory {

private String name;

public DataProviderFactoryTest() {
super();
}

public DataProviderFactoryTest(String name) {
super(name);
this.name = name;
}

@Test
public void method3() {
System.out.println("Method 3: " + name);

}
}

上面的输出是:

[RemoteTestNG] detected TestNG version 7.0.0
Method 1: null
Method 2: null
Method 3: null

预期输出:

[RemoteTestNG] detected TestNG version 7.0.0
Inside Data Provider
Inside Factory
Inside Factory
Inside Factory
Method 1: Data1
Method 1: Data2
Method 2: Data1
Method 2: Data2
Method 3: Data1
Method 3: Data2

请告诉我如何处理这个问题。

最佳答案

问题出在你的测试代码上。

  • 由于您添加了默认的无参数构造函数,TestNG 将调用该构造函数并解释空值。
  • 假设您删除了它并只留下了 1 个参数构造函数,TestNG 仍然会通过传递当前的 <test> 来调用它。标签的名称(这就是 TestNG 的工作原理)。
  • TestNG 对使用 @Factory 注解的基类构造函数不可见。注释,因为 AFAIK 注释不会被继承

因此解决方法是显式添加 @Factory您想要用作生成测试类实例的工厂方法的每个构造函数顶部的注释。

关于java - TestNG - 扩展类时 @Factory 和 @DataProvider 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57626175/

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