如何在Play框架单元测试中加载不同的插件?

NSF*_*NSF 4 java unit-testing playframework

我有不同的插件实现了Plugin接口.现在我把它们硬编码在play.plugins中,如下所示:

100:test.A
200:test.B
Run Code Online (Sandbox Code Playgroud)

但是在我的单元测试中,我不希望一次加载它们.换句话说,在测试AI中只想加载插件A而在测试B中只加载B. 而不是手动更改配置文件,有没有办法以编程方式更改它?我想在fakeApplication()调用时默认加载所有插件.

mgu*_*min 10

您可以FakeApplication使用添加或排除的插件以及自定义配置启动.

这是scala中的一个示例(我相信Java API具有等效机制):

val app = FakeApplication(  
  withoutPlugins = List("test.A", "test.B"),  
  additionalPlugins = List("test.C"),  
  additionalConfiguration = Map("customConfigKey" -> "customConfigValue")  
)
Run Code Online (Sandbox Code Playgroud)

在Java中,您可以使用类中fakeApplication可用的静态方法之一play.test.Helpers.这是scala示例的等价物:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import play.test.FakeApplication;
import static play.test.Helpers.*;

Map<String, Object> additionalConfiguration = new HashMap<String, Object>();
additionalConfiguration.put("customConfigKey", "customConfigValue");
List<String> withoutPlugins = Arrays.asList("test.A", "test.B");
List<String> additionalPlugins = Arrays.asList("test.C");

FakeApplication app = fakeApplication(additionalConfiguration, additionalPlugins, withoutPlugins);
Run Code Online (Sandbox Code Playgroud)

  • @FrEaKmAn我刚刚添加了Java的等效示例. (2认同)