我正在尝试测试通过Extension对象配置的自定义Gradle插件,该对象通常存在于build.gradle文件中。
例如,我的build.gradle通常看起来像这样:
{
apply plugin: 'foobarConfigurator'
[... stuff ...]
foobarConfig {
bar = 'boop'
baz = 'baap'
bot = 'faab'
}
[... stuff ...]
}
在我的自定义插件类中,我有在apply方法中执行此操作的代码:
def config = project.extensions.create('foobarConfig', FooBarConfig)
我不清楚如何在JUnit测试中编写我的测试方法,以便我可以在ProjectBuilder类创建的Project实例中的foobarConfiguration中提供和测试不同的配置值。
感谢任何帮助,谢谢!
答案 0 :(得分:2)
如果您打算为扩展编写JUnit测试,您只需创建一个实例并以编程方式对其进行配置:
class FooBarConfigTest {
private FooBarConfig fooBarConfig
@Before
public void before() {
fooBarConfig = new FooBarConfig()
}
@Test
public void example() {
fooBarConfig.bar = 'boop'
assertEquals("expectedIfBarIsBoop", fooBarConfig.someMethod())
}
}
另一方面,要测试插件本身,您可以使用ProjectBuilder并按类型查找扩展名:
class MyPluginTest {
private MyPlugin plugin
private Project project
@Before
public void before() {
project = ProjectBuilder.builder().build();
plugin = new MyPlugin()
plugin.apply(project)
}
@Test
public void example() {
FooBarConfig foobarConfig = project.extensions.findByType(FooBarConfig)
assertNotNull(foobarConfig)
foobarConfig.bar = 'boop'
}
}