I'm trying to find the easiest way to parse simple json to java Object for use json data in autotest (TestNG), but I don't understand another examples with various libraries.
I have this code:
@Test(dataProvider = "SearchData")
public void searchCatTest(String searchRequest, int expectedVal) {
CatScreen.search(searchrequest);
int actualVal = CatScreen.getSearchResultsNumber();
Assert.assertEquals(actualVal, expectedVal);
}
And I have this json:
{ "dataSet": [
{
"searchRequest": "*]",
"expectedVal": 0
},
{
"searchRequest": "Tom",
"expectedVal": 1
},
{
"searchRequest": "1234",
"expectedVal": 0
} ] }
How can I linked them?
@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 will create a new thread per row of data.