gpt4 book ai didi

java - Println 测试用例 : println and expected output are the same, 但测试失败

转载 作者:行者123 更新时间:2023-11-30 06:48:57 28 4
gpt4 key购买 nike

这是我现在正在做的一个简单测试用例的代码:

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

我很确定我忽略了一些非常愚蠢的东西,但我没有发现我缺少什么明显的东西来使这个测试用例工作。任何帮助将不胜感激。

感谢您花时间阅读我的问题!

最佳答案

要点是你的断言期望行尾有“\n”。但是换行符确实取决于您的操作系统。

因此:只需在捕获的输出字符串上调用 trim() 并从预期结果中删除该换行符。

编辑 OP 的评论:

  • 在现实世界的应用程序中,通常不会写入 System.out;如果有的话,你正在使用一些日志框架。
  • 检查输出是否与您预期的一样完全也没有多大意义。这意味着每次您更改消息时,测试都会中断。没有帮助。
  • 如果有的话,人们宁愿确保某些记录器对象看到特定的日志调用,“包含”一些重要的关键字等。
  • 在您的情况下,不清楚您打算实现什么!你看,当你调用一些“被测方法”时;那里的代码被执行;当有 System.out.println() 调用时;该电话在发生时会被计入在您的覆盖范围内。添加一个测试用例来检查写入是否确实发生对您的覆盖率根本没有帮助。请记住:您衡量生产代码的覆盖率。测试 System.out.print 是否有效(它通常有效 ;-) 无助于您的生产代码中的覆盖率。

关于java - Println 测试用例 : println and expected output are the same, 但测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509232/

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