用于单元测试的Play Framework 2 Java模拟插件
我正在尝试为Play Framework 2.2编写一个单元测试。我尝试测试的类调用一个Play插件,例如用于单元测试的Play Framework 2 Java模拟插件,java,unit-testing,playframework,playframework-2.2,Java,Unit Testing,Playframework,Playframework 2.2,我正在尝试为Play Framework 2.2编写一个单元测试。我尝试测试的类调用一个Play插件,例如 Exception e = new Exception(); MongoLogger.error(e); 插件的类定义是 MongoLogger extends Plugin 如何使用Mockito来模拟这个类并注册它。我希望避免在单元测试中使用伪造的应用程序。任何帮助都将不胜感激 使用包装器设计模式将对MongoLogger的调用封装到接口: public interface Log
Exception e = new Exception();
MongoLogger.error(e);
插件的类定义是
MongoLogger extends Plugin
如何使用Mockito来模拟这个类并注册它。我希望避免在单元测试中使用伪造的应用程序。任何帮助都将不胜感激 使用包装器设计模式将对
MongoLogger
的调用封装到接口:
public interface Logger {
// methods
}
public interface DefaultLogger implements Logger {
private final MongoLogger mongoLogger;
public void error(Object e){
monoLogger.error(e);
}
}
在生产代码中,无论您在哪里调用mongogger
,都可以使用Logger
接口。在测试代码中,插入模拟:
Mockito.mock(Logger.class);
我最终使用了fakeApplication,因为对象也被持久化在我要测试的代码中。如果有人感兴趣,它看起来像这样
Map<String, Object> additionalConfiguration = new HashMap<String, Object>();
List<String> additionalPlugins = Arrays.asList("plugins.MongoLogger");
running(Helpers.fakeApplication(additionalConfiguration, additionalPlugins), new Runnable() {
Map additionalConfiguration=newhashmap();
List additionalPlugins=Arrays.asList(“plugins.mongogger”);
正在运行(Helpers.fakeApplication(additionalConfiguration,additionalPlugins),新的Runnable(){
我没有收到NullPointerException,我只是在完成测试后清理插入的对象。MongoLogger不是我可以注入的字段。它是一个play插件,作为
import plugins.MongoLogger;
导入,然后静态调用它的方法MongoLogger.error(e)
我没有机会注入模拟对象,因此我不确定这是否可行