【发布时间】:2017-07-04 09:22:12
【问题描述】:
我的应用程序是 Spring boot 应用程序,暴露了一些 rest api
要运行我的集成测试,首先应用程序需要启动并运行,因为我的应用程序基于 gradle,如何确保当我从命令提示符执行 gradle 命令时,首先运行应用程序并且集成测试将运行。
task integration(type: Test, description: 'Runs the integration tests.', group: 'Verification') {
testClassesDir = sourceSets.integration.output.classesDir
classpath = sourceSets.integration.runtimeClasspath
outputs.upToDateWhen { false }
}
task appRunAndIntegrtationTest {
dependsOn 'run'
dependsOn 'integration'
tasks.findByName('integration').mustRunAfter 'run'
}
我在 build.gradle 中添加了上面的代码,但应用程序启动并运行,仅此而已,集成测试没有运行,任何人都可以对此有所了解。
更新:@Strelok,如前所述,应用程序已启动且集成任务未运行。
更新 1:我找到了一个 gradle 插件
https://github.com/marc0der/gradle-spawn-plugin
我正在尝试像下面这样使用
task startServer(type: SpawnProcessTask, dependsOn: 'assemble') {
command "java -jar ${projectDir}/build/libs/example.jar"
ready 'Started Application'
}
task stopServer(type: KillProcessTask)
但正在低于异常
*> 无法为 org.gradle.api.Project 类型的根项目“example-api”获取未知属性“SpawnProcessTask”。 * 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。*
请有人对此提出建议
【问题讨论】:
-
什么?清除您的帖子
-
@Edwin,没有收到您的评论。
-
修改您的帖子 - 无法理解!
-
您的集成任务需要依赖运行的应用。
-
您的帖子中没有足够的信息,但是如果您的
run任务是 bootRun 类型的任务,那么它在应用程序终止之前不会完成,所以任何依赖它的东西都不会在它停止之前运行.此时您的测试显然不会运行。在开始测试之前,您需要分叉应用程序执行并留出足够的时间来启动它。
标签: java spring spring-boot gradle build.gradle