Groovy 单元测试-以编程方式运行任务
我正在为gradle创建自定义任务。我不知道如何创建使用自定义任务类的任务。可能吗?我想为将在jenkins上运行的功能测试创建此任务 这是我的自定义任务:Groovy 单元测试-以编程方式运行任务,groovy,gradle,Groovy,Gradle,我正在为gradle创建自定义任务。我不知道如何创建使用自定义任务类的任务。可能吗?我想为将在jenkins上运行的功能测试创建此任务 这是我的自定义任务: package pl.gradle import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction class MyCustomTask extends DefaultTask { public MyCustomTask() { /
package pl.gradle
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class MyCustomTask extends DefaultTask {
public MyCustomTask() {
// do something
}
@TaskAction
def build() {
ant.echo(message: "only for tests")
}
}
这是我的测试课:
package pl.gradle
import static org.junit.Assert.*
import org.gradle.testfixtures.ProjectBuilder
import org.gradle.api.Project
import org.junit.Before;
import org.junit.Test
class MyCustomTaskTest {
private Project project;
def task
@Before
public void setUp() {
project = ProjectBuilder.builder().build()
task = project.task("build", type: MyCustomTask)
}
@Test
public void taskCreatedProperly() {
assertTrue(task instanceof MyCustomTask)
}
@Test
public void shouldRunTask() {
// task.execute() // how to run this task? I want to run build() method from MyCustomTask class which is @TaskAction
}
}
ProjectBuilder用于不执行任务的低级测试。它的最佳选择是测试插件。此外,您还需要编写更高级别的测试来执行实际构建,因此也需要执行任务。您通常会使用Gradle工具API来启动这些构建。查看完整Gradle发行版中的工具API示例。为每个任务操作调用您自己:
project.tasks.getByName("myTask").with { Task task ->
assertEquals task.group, 'My Group'
task.actions.each { Action action ->
action.execute task
}
}
我之前在这里提到过:谢谢!这就是我想要的。我会试着用它。@pepuch你能用你想出的代码发布一个答案吗?