我的代码使用PrintWriter
将内容写入文件,例如
PrintWriter writer = null;
try
{
writer = new PrintWriter( fileName + "_version", "UTF-8" );
writer.println( "writing File" );
}
catch( FileNotFoundException e )
{
e.printStackTrace();
}
我只想使用EasyMock编写一个jUnit测试。如何在EasyMock中模拟new
的{{1}}对象创建?
答案 0 :(得分:2)
您无法使用EasyMock测试以上代码。
使用EasyMock无法模拟对try / catch中对new PrintWriter()
的调用。故事结束。
您将需要PowerMock(ito)或JMockit以便能够控制new()
的结果。
或者(并且是首选):例如,应该使用依赖注入将难以测试的生产代码更改为更易于测试的代码。一种简单的方法是将文件写入对象传递到此类代码。
答案 1 :(得分:0)
这里的真正问题是:“您要测试什么?”。
测试和模拟需要经过测试的类和依赖项。
这里没有可见的测试类。如果您的想法是要测试创建和使用PrintWriter
的方法,是的,其他答案都正确,但是您不能。您需要在EasyMock之上使用PowerMock来模拟new
。
但是,根据您的工作,有意义的重构将轻松解决问题。因此,如果您提供一个更完整的示例,我们将能够提供更多建议。