gpt4 book ai didi

java - 由于数据提供者配置不正确而跳过测试

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:08 25 4
gpt4 key购买 nike

我是第一次使用 testNG,有一个问题。我正在尝试从 json 文件加载一些数据,并将这些数据与 dataProviders 结合使用来编写一些测试。我有一个辅助文件,它有一个 parseData 方法,该方法从 json 文件中获取数据并构建我需要测试的所有数据的映射。在我的主测试文件中,我定义了一个测试,如下所示:

在我的主测试文件中,我还有一个 BeforeClass 方法,用于加载调用 tDataHelper 类中的 parseData 方法。

每次运行测试时,它都会被跳过,因为每次我尝试调试 createStudents 数据提供程序时 tDataHelper 文件都有空映射。我认为这与静态与实例有关,我不确定到底出了什么问题。下面的代码看起来没问题并且应该可以工作吗?有人能解释一下吗?

    public class testStudents
{
private static tDataHelper helper = new tDataHelper();

@BeforeClass
public void setup() throws Exception
{
tDataHelper.parseData();
}

@FunctionalTest
@Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class)
public void testCreateStudents(List<Student> studentsToCreate){}
}


public class tDataHelper
{
private static List<Student> studentsToCreate = new HashSet<>();

static void parseData() throws Exception
{
// read in json file and add students to the students list
// studentsToCreate.add(node.parse(....))
}

@DataProvider
public static Object[][] createStudents()
{
return new Object[][]{
{
studentsToCreate
}
}
}

最佳答案

您的数据提供程序类中可能存在配置问题。

您想对所有学生进行迭代循环吗?正确的!那么你的测试方法应该如下所示。

@Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class)
public void testCreateStudents(Student studentsToCreate){}

我已经更新了示例,用 String 类替换 Student 类,下面是工作示例。请与下面的代码进行交叉检查。

public class tDataHelper {
private static List<String> studentsToCreate = new ArrayList<String>();

static void parseData() throws Exception {
studentsToCreate.add("user1");
studentsToCreate.add("user2");
studentsToCreate.add("user3");
}

@DataProvider
public static Object[][] createStudents() {
Object[][] objArray = new Object[studentsToCreate.size()][];
for (int i = 0; i < studentsToCreate.size(); i++) {
objArray[i] = new Object[1];
objArray[i][0] = studentsToCreate.get(i);
}
return objArray;
}
}

public class testStudents {
private static tDataHelper helper = new tDataHelper();

@BeforeClass
public void setup() throws Exception {
tDataHelper.parseData();
}
@Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class)
public void testCreateStudents(String studentsToCreate) {
System.out.println(studentsToCreate);
}
}

我正在使用qaf对于 Json Data Provider ,因此您不需要手动解析 json 数据并从数据提供程序类中删除。

关于java - 由于数据提供者配置不正确而跳过测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684747/

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