Java JUNIT格式输出

Java JUNIT格式输出,java,junit,Java,Junit,我对Java非常陌生,正在测试一小段Java代码: 我有一个java程序,它像计算器一样工作,以表格格式将输入/输出写入控制台- Inputs: +-+-----+ | |1 | +-+-----+ |A|1 + 1| +-+-----+ Results: +-+-------+ | |1 | +-+-------+ |A|2.00000| +-+-------+ 有人能帮助我们编写JUnitAssert语句来验证程序是否以正确的格式和正确的值打印吗 我正在进行黑盒测试,不了解

我对Java非常陌生,正在测试一小段Java代码:

我有一个java程序,它像计算器一样工作,以表格格式将输入/输出写入控制台-

Inputs:
+-+-----+
| |1    |
+-+-----+
|A|1 + 1|
+-+-----+
Results:
+-+-------+
| |1      |
+-+-------+
|A|2.00000|
+-+-------+
有人能帮助我们编写JUnitAssert语句来验证程序是否以正确的格式和正确的值打印吗

我正在进行黑盒测试,不了解代码中编写的代码/类/方法。

您可以编写测试,真正测试您的被测类是否使用System.out打印预期输出。有关详细信息,请参阅

但是更好的方法是:被测试的类应该有一个方法,该方法以字符串的形式返回预期的内容

单元测试调用这些方法,并将字符串与预期值进行比较。你看,在现实世界中,打印到System.out并不重要,也不会发生。因此,花大量时间测试生产代码的这一方面并不会让您受益匪浅

换句话说,合理的测试更像:

@Test
public void testInputs() {
  Whatever underTest = new Whatever();
  underTest.add(1);
  asserThat(underTest.getResult(); is("|A|2.00000|"));
}

或者类似的东西

类API必须是可测试的。可测试代码的第一条规则。我编写了如下代码,但它没有测试输出是否以我粘贴在问题中的格式编写-assertTrueoutContent.toString.contains | a | 2.00000 |@davidxxx在这种情况下可能不太容易。但这就是为什么人们应该做tdd,从一开始就提出可测试的API……我完全同意tdd。和你一样,我也是一个超级粉丝:为了记录在案:请阅读。。。我回答的主要原因是:因为不做所有的家庭作业就可以给你一些帮助。。我在寻找意见。如果输出控制台中打印的确切格式可以测试。代码确实确保计算正确进行,但无法确定字符串是否显示为输出的第1行、第2行、第3行等。assertTrueoutContent.toString.contains | A | 2.00000 |;