如何使用JUnit

时间:2016-03-07 20:41:17

标签: java unit-testing junit

我在java中有下一个代码,我只是使用JUnit来测试简单的事情和一些例外,但我怎样才能测试下一个函数:

public static void suma() {
    Scanner scanner = new Scanner(System.in);
    int primerSumando = scanner.nextInt();
    int segundoSumando = scanner.nextInt();
    System.out.print(primerSumando+segundoSumando);
}

2 个答案:

答案 0 :(得分:0)

您可以通过替换默认输出打印流来实现此目的:

private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();

private static PrintStream outBackup;

@BeforeClass
public static void backupOut() {
    outBackup = System.out;
}

@Before
public void setUpStreams() {
    System.setOut(new PrintStream(outContent));
}

@AfterClass
public static void cleanUpStreams() {
    System.setOut(outBackup);
}

@Test
public void out() {
    suma();
    assertEquals("4", outContent.toString());
}

但请记住,您必须避免直接使用System.out。使用记录器或创建接收操作结果的接口。

答案 1 :(得分:-1)

硬编码的I / O将无法使用JUnit进行测试。可测试的版本是suma()将输入流和输出流作为参数。在真实程序中,您传入System.in和System.out。在JUnit中,您可以传入String或StringBuffer流,允许您的测试用例控制输入并检查输出。

相关问题