我正在运行测试,以查看我输入到文件中的值是否与我从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