gpt4 book ai didi

java - JUnit 测试失败但显示相同的预期和实际结果

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:56 24 4
gpt4 key购买 nike

所以,我什至不知道从哪里开始。整个惨败始于八个多小时前,杰里一个接一个地帮我解决了问题。现在,这个: Junit test failing, with passing results单击“单击以查看差异”后,它会变得更好: enter image description here

我有:
- 使缓存无效并重新启动 IntelliJ
- 尝试运行 where Double[] numSet = {23.0};,然后将预期结果设置为 numSet 而不是 [23.0]"。没有骰子。
- 关于添加增量的答案无效:JUnit test fails even if the expected result is correct

我觉得还值得注意的是,当从主类调用该方法时,据推测发生在第 48 行的错误并没有出现,所以我不知道那可能是什么。

我们将不胜感激。

这是被测试方法的代码。差点忘了:

public List<Object> trimNumberSet(Double[] numSet) {
List<Object> trimmedNumberSet = new ArrayList<>();

for (int i = 0; i < numSet.length; i++) {
if (numSet[i] != null) {
trimmedNumberSet.add(numSet[i]);
}
}
return trimmedNumberSet;
}

最佳答案

您正在比较 String和一个 List<Object> .

所以你正在使用方法 assertEquals(Object expected, Object actual);

显然是 String不等于 List<Object>因此失败了。

但由于列表的 String 表示形式与您编写的相同,它会在控制台中隐藏结果,因为它使用此表示形式向您显示此测试的结果。

所以你应该比较两者的字符串表示:

assertEquals("[23.0]", setSorteer.trimNumberSet(numSet).toString());

更好的办法是直接比较两个列表,而不是将您的测试基于字符串表示,因为它们将来可能会发生变化,您的测试将失败:

assertEquals(Arrays.asList(23.0), setSorteer.trimNumberSet(numSet));


还有任何您不返回 List<Double> 的原因在你的方法中?

public List<Double> trimNumberSet(Double[] numSet) {
List<Double> trimmedNumberSet = new ArrayList<>();
...
return trimmedNumberSet;
}

关于java - JUnit 测试失败但显示相同的预期和实际结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com