您在标签中列出了 junit。
Junit 的 .equals(double, double, accuracy) 允许您指定它们与最后一个参数的接近程度。
我只是读入值并在测试中为每个调用 .equals ...
或者有什么我没有得到的问题吗?
要解析这些行,您的示例使用空格,但您说“CSV”(逗号分隔)。如果它们实际上是 CSV,你可以使用类似的东西:
String[] line = currentLine.split(",")
在每一行。那会给你 line[0]="item1", line[1]="5.12", line[2]="6.12"
之后尝试使用 Double.parseDouble() 解析 line[1] 和 line[2]
顺便说一句,使用 assertEquals,而不是 assertTrue,更具体的 assertEquals 将显示您想要的值以及您在 junit 结果中作为错误的一部分获得的值。
我还建议您传入可选字符串。测试线如下所示:
assertEquals("item "+file1.line[0]+" values do not match",
Double.parseDouble(file1.line[1]),
Double.parseDouble(file2.line[1]),
0.001)
还有一个完整的问题是确保您为每个文件读取同一行 - 让它们正确配对。如果保证它们的顺序相同,那么你很好,但如果不是,你可能想通过 name 字段散列第一个文件:
for(String line: file1.readNextLine())
file1hash.put(line.split(",")[0],line)
然后,当您遍历第二个文件时,您可以轻松地执行以下操作:
for(String line2: file2.readNextLine()) {
String line1=file1hash.get(line2.split(",")[0])
确保 line1 和 line2 指的是同一行。