当前位置: 首页 > 知识库问答 >
问题:

如何使用gradle在另一个子项目的web项目上运行集成测试

韩乐湛
2023-03-14

我有一个gradle多项目,我的war文件构建在一个子项目中,我的集成测试在另一个子项目中。我已经读到gretty应该能够启动jetty实例,让我在构建期间运行集成测试,但我不知道如何将gretty integrationTestTask任务“连接”到另一个子项目中的任务,从中运行实际测试。

我的项目结构如下所示:

root/
    int-test/
        build.gradle
    web/
        build.gradle
    build.gradle
    settings.gradle

根目录/设置。格雷德尔:

include ':web'
include ':int-test'

根/构建。格雷德尔:

apply plugin: 'java'

root/web/build。格雷德尔:

apply plugin: 'war'
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'

gretty {
    contextPath = '/'
    integrationTestTask = 'intTests'
}

task intTests << {
    println 'This task will run in just the right time'
}

root/int测试/构建。格雷德尔:

apply plugin: 'java'

task intTests << {
    println 'All integration testing is done in here'
}

当我运行"./gradlew-q intTest"时,输出如下:

All integration testing is done in here
2014-12-11 15:37:02.046 INFO  - Logging initialized @1157ms
2014-12-11 15:37:02.554 INFO  - jetty-9.2.3.v20140905
2014-12-11 15:37:02.682 WARN  - ServletContainerInitializers: detected. Class hierarchy: empty
2014-12-11 15:37:03.114 INFO  - Started o.a.g.JettyWebAppContext@7da22e4a{/,file:/Users/fredrik/callista/dev/grettyfitnesse/web/build/inplaceWebapp/,AVAILABLE}
2014-12-11 15:37:03.130 INFO  - Started ServerConnector@2590ae17{HTTP/1.1}{0.0.0.0:8080}
2014-12-11 15:37:03.130 INFO  - Started @2245ms
2014-12-11 15:37:03.137 WARN  - Jetty 9.2.3.v20140905 started and listening on port 8080
2014-12-11 15:37:03.158 WARN  -  runs at:
2014-12-11 15:37:03.159 WARN  -   http://localhost:8080/
This task will run in just the right time
2014-12-11 15:37:03.221 INFO  - Stopped ServerConnector@2590ae17{HTTP/1.1}{0.0.0.0:8080}
2014-12-11 15:37:03.229 INFO  - Stopped o.a.g.JettyWebAppContext@7da22e4a{/,file:/Users/fredrik/callista/dev/grettyfitnesse/web/build/inplaceWebapp/,UNAVAILABLE}
2014-12-11 15:37:03.232 WARN  - Jetty 9.2.3.v20140905 stopped.
Server stopped.

因此,web项目中的intTests任务将在正确的时间运行,但int测试项目中的intTests任务将在早期运行(在web服务器启动之前) 我如何设置它,使gretty插件“连接”到我的int测试项目中定义的intTests任务

我尝试过的事情:*设置“集成测试任务=”: int-test: intTest”,希望它足以指定gretty应该在哪个子项目中寻找正确的任务。结果——jetty甚至还没有启动。*在根中创建intTest任务build.gradle尝试在int-test中扩展该任务。结果——没有区别。*在网络项目中向intTest任务添加了一个依赖项(“: int-test: intTest”)。结果——没有区别

共有1个答案

陆城
2023-03-14

首先,检查是否gretty。integrationTestTask=“:int test:intTests”有效。如果没有,请将以下内容添加到int tests/build中。格雷德尔

intTests {
    dependsOn(":web:taskThatStartsTheWebServer")
    finalizedBy(":web:taskThatStopsTheWebServer")
}

(您可以在Gretty文档或gradle tasks的输出中找到任务名称)

请注意,它是task foo{dependsOn“bar”},而不是task foo

 类似资料:
  • 在我的多项目中,我正在根项目上运行测试任务,并期望它将在子项目上运行测试任务并生成一个测试报告。我观察到的是,它从来没有在子项目上运行测试任务。我的期望是不正确的吗?“我需要在我的gradle脚本中进行任何特殊配置吗? 请注意,我的根项目中没有测试。

  • 我试图让Jenkins在我的项目上运行。事实上,有一个父build.gradle子项目似乎是个问题。 当运行时,我得到: 12: 14:17坑 12: 14:17坑 12: 14:17坑 线程“main”组织中出现异常。最可怜的。util。PitError:覆盖率生成仆从异常退出。请检查类路径。 我尝试只为子项目配置pitest,正如一些帖子中所建议的那样,但没有任何区别 如果我尝试在子项目上运行

  • 使用IntelliJ IDEA 14.0.2,我导入了一个gradle java项目。我们已经建立了一个源集和配置来将集成测试与单元测试分开。(我们的集成测试在测试源树中,但在它们自己的包中)。Build.Gradle的相关部分是: 或者,如何根据“--tests”arg的内容将测试任务委托给另一个任务?

  • 我正在构建一个定制的Java库。我把我的大部分“重复”代码都保存在那里,比如文件处理、字符串处理等。每次我想使用它们时,我都必须将该类复制并粘贴到我正在进行的其他项目中。有没有办法让这个自定义库类成为“依赖项”?我在用我的智能手机。

  • 我使用gradle创建了一个项目,并创建了gradle包装器。如何确保项目在没有安装gradle的机器上构建和运行?

  • 我面临以下问题。我有一个多模块的Gradle项目。一个模块是我的根项目,第二个模块是集成测试。 为了让我的集成测试运行,复制任务需要首先运行,以便将一些资产移动到项目根目录上的文件夹中。 我已经在我的根项目上定义了这样一个任务,当我试图调用它时,它什么也不做(我尝试了几种不同的调用方式)。 由于失败,我继续在子项目本身上创建了以下任务: 这是我的另一个任务。我的目标是让它将根项目类以及在下生成的j