如何在Play框架unit testing中加载不同的插件?

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

 100:test.A 200:test.B 

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

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

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

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

在Java中,您可以使用play.test.Helpers类中提供的一种fakeApplication静态方法。 这是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 additionalConfiguration = new HashMap(); additionalConfiguration.put("customConfigKey", "customConfigValue"); List withoutPlugins = Arrays.asList("test.A", "test.B"); List additionalPlugins = Arrays.asList("test.C"); FakeApplication app = fakeApplication(additionalConfiguration, additionalPlugins, withoutPlugins);