使用jmock测试System.in和System.out
本文基于读者已具备juit和jmock基础,在tdd过程中对于无法有效测试System.in和System.out给出解决方案
技术难点包括
1、mock宿主还原
2、inout参数的行为模拟
3、mock system.in和out
1、测试主体?4、如果在测试主体中使用System.out输出,则下面的代码可以对其进行测试 /** * Test method for {@link ConsoleManagerBizImpl#writeLine(String)} */ @Test public void testWriteLine() { final PrintStream origin = System.out; final PrintStream mockout = context.mock(PrintStream.class); System.setOut(mockout); final String toWrite = "109-230-912-0"; context.checking(new Expectations() { { oneOf(mockout).println(toWrite); } }); biz.writeLine(toWrite); System.setOut(origin); }}