我正在为 gradle 编写自定义插件,作为单元测试的一部分,我想调用我的任务,但前提是它的先决任务已被执行。
不幸的是,实际的插件是一个内部项目,所以我不能确定确切的来源,但我准备了一个单元测试来演示这个问题:
package toy
import org.gradle.api.Project
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Test
class ToyTasksTest {
boolean task1Run = false
boolean task2Run = false
@Test
public void taskDependencies(){
Project p = ProjectBuilder.builder().build()
p.task("task1") << {
p.logger.info("task1 running")
task1Run = true
}
def task2 = p.task("task2", dependsOn: 'task1') << {
p.logger.info("task2 running")
task2Run = true
}
task2.execute() // <--- what magic do I need here instead of .execute()
assert task2Run == true
assert task1Run == true
}
}
输出是:
Assertion failed:
assert task2Run == true
| |
false false
如果您想快速运行测试,可以在 github 上找到该项目。
另一种说法而不是写作方式:
task2.execute()
我想运行相当于:
gradle task2
在单元测试中。