我建议您为IO类(
PrintWriter在您的情况下是该类)做一个接口包装,以便可以使用模拟对象进行输出。您不必测试Java
PrintWriter,就想测试功能,对吗?
所以你的课将是
class MyClass { MyWriter out; public void setOut(MyWriter out) { this.out = out; } // write to file public void write(String fileName, List<FigureGeneral> figuresList) { try { try { for (int i = 0; i < figuresList.size(); i++) { out.println(figuresList.get(i).toString()); } } finally { out.close(); } } catch (IOException e) { System.out.println("Cannot write to file!"); } }}MyWriter接口的签名非常简单。
interface MyWriter { void println(Object x); // You can add other println methods here. void close();}然后,您可以使用EasyMock编写测试。测试方法将类似于
@Testpublic void testWrite() { MyWriter out = EasyMock.createMock(MyWriter.class); EasyMock.expect(mock.println(EasyMock.anyObject())).times(3); EasyMock.expect(mock.close()).times(1); List<FigureGeneral> list = ... list.add(...); list.add(...); list.add(...); replay(mock); MyClass myClass = new MyClass(); myClass.setOut(out); myClass.write("mockFileName", list); verify(mock);}


