我正在運行測試,以查看我輸入到文件中的值是否與我從API生成的值相同。所以我有從我的API生成的實際值,我有另一個期望值列表。我遇到的問題是我無法將蘋果與蘋果進行比較。如何比較foreach循環內的哈希集迭代通過另一個哈希集Java
例子:
Actual = {red, bleu, yellow, purple}
expected = {bleu, red, purple, yellow}
failure: red != bleu, bleu != red, yellow != purple, purple != yellow
我不知道怎麼回事,以更好地描述我在說什麼比你展示我的代碼等。
這裏是我的代碼:
TreeSet<String> hashSet = (TreeSet<String>) calcGraph.getInputs();
boolean success = true;
String error="";
for(String xpath : hashSet) {
String actual = someApi(response, expression, xpath);
for (String values : data.getDataOutputs().keySet()) {
String expected = data.getDataOutputs().get(expectedXpath);
if (!expected.equals(actual)) {
error+= "\nExpected : " + expected +"\nActual: " +actual+"\n";
success = false;
} if (!success) Assert.fail(error);
}
}
我如何比較1個foreach循環或等效內這些列表?任何幫助或援助將不勝感激。
編輯:
Iterator<String> expectation = expectedList.iterator();
Iterator<String> actuation = actualList.iterator();
while((expectation.hasNext()) && (actuation.hasNext())) {
String exp = expectation.next();
String act = actuation.next();
logger.info("Expected: "+exp);
logger.info("Actual: "+act);
// Validation check
if (!exp.equals(act)) {
error+= "\nExpected : " + exp +"\nActual: " +act+"\n";
success = false;
} if (!success) Assert.fail(error);
}
秩序的事情,因此這將失敗...
的for-each不適合這個工作的人。你需要一個普通的for循環。 –
我沒有在這裏看到任何列表。我看到一個'hashSet'變量(這意味着一個'HashSet')和一個'Map'('data.getExplanationOutputs()')。你想比較哪個列表? – Eran
你想使用assertj;它有這樣的情況下的斷言('assertThat(list1).containsExactlyElementsOf(list2)')。 – fge