nih*_*lon 11 java unit-testing intellij-idea junit4
所以,我甚至不知道从哪里开始.整个惨败都是在八个多小时前开始的,杰里在一个接一个的问题上走出了困境.现在,这个:
点击"点击查看差异"后,它会变得更好:

我有:
- 无效的缓存并重新启动IntelliJ
- 尝试运行在哪里Double[] numSet = {23.0};然后将预期结果设置为numSet而不是"[23.0]".没有骰子.
- 有关添加增量的答案不起作用:即使预期结果正确,JUnit测试也会失败
我觉得值得注意的是,当从主类调用方法时,假设在第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;
}
Run Code Online (Sandbox Code Playgroud)
Ale*_* C. 19
你正在比较a String和a List<Object>.
所以你正在使用这种方法 assertEquals(Object expected, Object actual);
显然a String不等于a List<Object>,因此失败.
但由于列表的String表示与您编写的相同,因此它会在控制台中隐藏结果,因为它使用此表示向您显示此测试的结果.
所以你应该比较两者的String表示:
assertEquals("[23.0]", setSorteer.trimNumberSet(numSet).toString());
Run Code Online (Sandbox Code Playgroud)
更好的想法是直接比较两个列表,而不是将您的测试基于字符串表示,因为它们将来可能会更改,您的测试将失败:
assertEquals(Arrays.asList(23.0), setSorteer.trimNumberSet(numSet));
Run Code Online (Sandbox Code Playgroud)
List<Double>在你的方法中返回?
public List<Double> trimNumberSet(Double[] numSet) {
List<Double> trimmedNumberSet = new ArrayList<>();
...
return trimmedNumberSet;
}
Run Code Online (Sandbox Code Playgroud)