测试自定义Gradle插件:提供配置数据

时间:2015-01-12 16:54:18

标签: gradle

我正在尝试测试通过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中提供和测试不同的配置值。

感谢任何帮助,谢谢!

1 个答案:

答案 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'
    }

}