我想创建一个单元测试方法。 Java版本 - 1.6
@Test
public void TestCreateHtml() throws IOException{
final File output = parser.createHtml();
final File expected = new File("src/main/resources/head.jsp");
assertEquals("The files differ!", FileUtils.readLines(expected), FileUtils.readLines(output));
}
这种测试方法不起作用。 这两个文件的内容是相等的,但它们具有不同数量的空格。
如何忽略空格?
答案 0 :(得分:7)
如果问题出在前导/尾随空格中:
assertEquals(actual.trim(), expected.trim());
如果文件内容存在问题,我只能想到的解决办法是从两个输入中删除所有空格:
assertEquals(removeWhiteSpaces(actual), removeWhiteSpaces(expected));
其中removeWhiteSpaces()方法如下所示:
String removeWhiteSpaces(String input) {
return input.replace("\\s+", "");
}
答案 1 :(得分:1)
如果问题只是前导/尾随空格,则可以在修剪两者后逐行比较。如果一个文件中的另一个换行符与另一个文件相比,则无法使用此功能。
@Test
public void TestCreateHtml() throws IOException{
final File output = parser.createHtml();
final File expected = new File("src/main/resources/head.jsp");
List<String> a = FileUtils.readLines(expected);
List<String> b = FileUtils.readLines(output);
assertEquals("The files differ!", a.size(), b.size());
for(int i = 0; i < a.size(); ++i)
assertEquals("The files differ!", a.get(i).trim(), b.get(i).trim());
}
答案 2 :(得分:1)
迭代列表并修剪每一行
List<String> result = new ArrayList<String>();
for(String s: FileUtils.readLines(expected)) {
result.add(s.trim());
}
与其他文件相同。
然后比较新列表。
答案 3 :(得分:0)
在比较前删除前导空格和尾随空格:
@Test
public void TestCreateHtml() throws IOException{
final File output = parser.createHtml();
final File expected = new File("src/main/resources/head.jsp");
assertEquals("The files differ!", FileUtils.readLines(expected).replaceAll("^\\s+|\\s+$", ""), FileUtils.readLines(output).replaceAll("^\\s+|\\s+$", ""));
}