Hamcrest.Matchers: вложенный массив JSON

У меня есть следующий массив: [[Disable,Enable,No,Yes][Joe,Bill,Doug,Kevin],[Red,Blue,Pink,Magenta],[One,Two,Three,Four]];

Мне нужен сопоставитель подколенного сухожилия, который будет соответствовать файлу excel, в котором есть данные пары имя/значение. Я пробовал: hasItem, hasItems, hasItemInArray.

Я просмотрел следующие ссылки:

Ссылка на Hamcrest

Дайте мне знать, если мне не хватает какой-либо информации, которая была бы полезна.

private String[][] getExcelSheetData(String excelFile)
        throws NoExcelValidationDataFoundException {
    String[][] excelValidationData = null;

    try {
        ExcelDAOFactory excelDAOFactory = (ExcelDAOFactory) DAOFactory
                .getFactory(DAOFactory.EXCEL);
        excelDAOFactory.setExcelFile(excelFile);
        excelValidationData = excelDAOFactory.fetchData();
        TAFLogger.logTAFActivity("Finished retrieving data from "
                + excelFile);
    } catch (InvalidFormatException | IOException | UnsupportedDAOException e) {
        TAFLogger.logTAFActivity(
                "Error retrieving data from ExcelDAOFactory: "
                        + e.getMessage(), logger.WARN);
        throw new NoExcelValidationDataFoundException(
                "Could not retireve validation " + "data from " + excelFile
                        + e.getMessage());
    }
    return excelValidationData;
}

Код, чтобы попытаться сопоставить с hamcrest, в котором нет ничего для «вложенного массива», который я вижу:

 requestBuilder = new RequestSpecBuilder();
    requestBuilder.addCookie().setContentType(ContentType.JSON);
    requestSpecification = requestBuilder.build();


    responseBuilder = new ResponseSpecBuilder();
    responseBuilder.expectStatusCode(Integer.parseInt(xmlTest
        .getParameter("http-status-code-200")));
    //responseBuilder.expectContentType(ContentType.JSON);
    responseSpecification = responseBuilder.build();

    try {
        validationData = getExcelSheetData(excelFile);
    } catch (NoExcelValidationDataFoundException e) {
        Logger.logActivity("Could not retrieve Excel sheet data: "
                + e.getMessage(), Logger.ERROR);
        Assert.fail("Could not retrieve Excel sheet data: "
                + e.getMessage());

  for (int i = 0; i < validationData.length; i++) {
  responseBuilder.expectBody(validationData[i][0],
hasItemInArray(validationData[i][1]));

 responseSpecification = responseBuilder.build();

    try {
        //Response res = given().getValue()).get("data/roles");

        String data = given().spec(requestSpecification).
.expect().spec(responseSpecification).when().get("data/roles").asString();
        System.out.println(data);

        logger.logTestActivity("Completed testing JSON payload using Excel    file");
    } catch (AssertionError e) {
        logger.logTestActivity(
                "Error testing JSON payload: " + e.getMessage(),
                logger.ERROR);
        throw new Exception(e);

В последнем параграфе с «hasIteminArray» я пытаюсь использовать Hamcrest для подтверждения JSON вложенного массива.


person Community    schedule 30.01.2013    source источник
comment
Вы спрашиваете, как проверить значение в файле excel с помощью hamcrest matcher? Показать код будет полезно.   -  person Gavin Xiong    schedule 31.01.2013
comment
Вам нужно разделить эту проблему на две части: прочитать пары имя/значение из Excel в карту, а затем построить сопоставитель из этой карты. Во-первых, вы можете использовать POI. Вторая часть проблемы более актуальна для Hamcrest: можете ли вы объяснить, как вы ожидаете сопоставить свой двумерный массив с парами имя/значение?   -  person Kkkev    schedule 31.01.2013
comment
добавил некоторый код, чтобы помочь понять, что я делаю   -  person    schedule 31.01.2013


Ответы (1)


Насколько я знаю, в Hamcrest нет интеграции с Excel. simple-excel предлагает проверку сгенерированные файлы Excel и для этого использует собственные сопоставители Hamcrest.

В противном случае вам, скорее всего, придется искать совпадения самостоятельно, используя Apache POI или JExcel.

person jabbrwcky    schedule 31.01.2013