Как разрешить indexoutofboundsexception [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
 Как разрешить indexoutofboundsexception [закрыто]

Сообщение Anonymous »

В настоящее время у меня есть структура Cucumber/Java/RestAssured/Testng, выполняющая некоторые функциональные тесты автоматизации, которые сравнивают результат DB с ответом API JSON, чтобы убедиться, что данные соответствуют. Когда я запускаю его, я могу получить значения соответствующим образом и сравнить, однако, в конце сборки я получаю IndexoutOfBoundSexception. Ниже приведен тестовый код, следующий двумя методами поддержки для утверждения значений: < /p>
dbcheck: < /p>
public static List getDataFromDb(String query, int index) throws SQLException {
List expData = new ArrayList();
ResultSet res = null;
stmt = db2Connection.createStatement();
try {
if (query == null) {
Reporter.log("Expected behaviuor, Query is empty only in cases of negative cases", true);
} else {
res = stmt.executeQuery(query);
while (res.next()) {
// for (index = 0; index < res.getFetchSize(); index++)
expData.add(res.getObject(index));
System.out.println(expData);
}
System.out.println("Resultset is " + res.toString());
}
} catch (SQLException e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
} finally {
if (res != null) {
try {
Reporter.log("Closing Result set", true);
res.close();
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
}
stmt.close();
// Reporter.log("Closing database connection", true);
// tearDown();
}
return expData;
< /code>
test: < /p>
@Then("Check for the DB values matching the response values {string},{string},{string}")
public void checkRespAgainstDB(String item, String duration, String query) throws SQLException {
String queryKey = testDBProps.getProperty(query);
List itemList = new ArrayList();
itemList = DatabaseConfig.getDataFromDb(queryKey.replace("nbrDays", duration), 1);
String resp = gResponse.asString();
System.out.println("query name is + " + query + " and queryKey value is " + queryKey);
System.out.println("Response is:" + "\n" + "\n" + resp);
try {
if (!resp.isEmpty()) {
JsonPath json = new JsonPath(resp);
for (int i = 0; i < itemList.size(); i++) {
System.out.println("Checking for item list");
if (!(item.isEmpty() && duration.isEmpty())) {
sortAndAssertForString(itemList, "content.item", json, i);
}
}
}
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
< /code>
sortandassertforstring Метод: < /p>
public void sortAndAssertForString(List expResponseList, String responseNode, JsonPath json, int index) {
List actualStringResponse = new ArrayList();
actualStringResponse = json.get(responseNode);
if (actualStringResponse == null) {
Reporter.log("The response is empty", true);
Assert.fail();

} else {
AsserEquals_Object(actualStringResponse.get(index), expResponseList.get(index),
"Actual and Expected " + responseNode + " are same");
}
}
< /code>
Метод AsseserequalsObject: < /p>
public void AsserEquals_Object(Object actual, Object expected, String s) {
try {
Assert.assertEquals(actual, expected);
Reporter.log("INFO: " + "(Successful- Expected: " + expected + "| Actual: " + actual, true);
} catch (Exception e) {
Reporter.log("ERROR: " + "(Failed - Expected:" + expected + " and Actual:" + actual, true);
Assert.fail();
throw e;
}
}
< /code>
Когда я получаю ответ, я получаю 397 общих элементов, и я также получаю 397 строк д.Б. Но я продолжаю получать indexoutofboundsexception java.lang.runtimeexception: java.lang.indexoutofboundsexception: индекс 100 из границ для длины 100 . Я проверяю первое поле выбора в запросе (элемент). Любые рекомендации приветствуются. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/794 ... sexception

Вернуться в «JAVA»