在 Java 中使用 TestNG 从 JSON 读取测试数据

Reading test data from JSON with TestNG in Java

我正在尝试找到最简单的方法来将简单的 json 解析为 java 对象,以便在自动测试 (TestNG) 中使用 json 数据,但我不明白另一个各种库的示例。

我有这个代码:

@Test(dataProvider = "SearchData") 
public void searchCatTest(String searchRequest, int expectedVal) {
    CatScreen.search(searchrequest);
    int actualVal = CatScreen.getSearchResultsNumber();
    Assert.assertEquals(actualVal, expectedVal);
}

我有这个 json:

{   "dataSet": [
    {
      "searchRequest": "*]",
      "expectedVal": 0
    },
    {
      "searchRequest": "Tom",
      "expectedVal": 1
    },
    {
      "searchRequest": "1234",
      "expectedVal": 0
    }   ] }

如何链接它们?

您可以使用以下库将 json 代码解析为 java :

        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>

你可以参考 link如何解析json代码。

@DataProvider(name = "json-data")
public static Object[][] getJSON(ITestContext context) throws FileNotFoundException {
    String filename = <get name from context>
    JsonArray array = new JsonParser().parse(new FileReader(filename))
       .getAsJsonArray();
    Gson gson = new Gson();
    List < Map > list = gson.fromJson(array, List.class);
    Object[][] objects = list.stream()
        .map(testData - >
            testData.values().stream().map(obj - > 
              doubletoint(obj)).toArray()).toArray(Object[][]::new);
    return objects;
}

TestNG 将为每行数据创建一个新线程。