以下是我正在做的简单测试案例的代码:
private static final ByteArrayOutputStream OUTCONTENT = new ByteArrayOutputStream();
private static final PrintStream OLD_STD_OUT = System.out;
@Before
public void setUp() {
System.setOut(new PrintStream(OUTCONTENT));
}
@After
public void tearDown(){
System.setOut(OLD_STD_OUT);
}
@Test
public void consolePrintResetTest(){
consolePrintReset();
assertEquals("Les statistiques ont été réinitialisées avec succès! \n", OUTCONTENT.toString());
}
和我正在测试的方法:
public static void consolePrintReset(){
System.out.println("Les statistiques ont été réinitialisées avec succès!");
}
这里有一个截图: http://puu.sh/vpY3b/9a398d0b41.png
我很确定这是一件非常愚蠢的事情我已经过去了,但是我没有发现我缺少哪些明显的东西让这个测试用例工作。任何帮助将不胜感激。
感谢您抽出宝贵时间阅读我的问题!
答案 0 :(得分:2)
关键是你的断言预期" \ n"在行尾。但换行确实取决于您的操作系统。
因此:只需在捕获的输出字符串上调用trim()并从预期结果中删除该换行符。
通过OP编辑评论:
答案 1 :(得分:2)
显然,单元测试中的虚假空间是您尝试解决问题,如果没有它,问题仍然存在。 (见关于问题的评论。)
在这种情况下,问题很可能是您的系统的行分隔符不是简单的换行符。以下是如何将测试编写为独立于测试平台的;即在Windows,Linux和MacOSX上工作......
trim()
或者,您可以使用{{1}}剥离行终止符(以及任何其他前导/尾随空格)。