gradle build不跳过(总是调用)集成测试

时间:2015-06-11 16:05:49

标签: gradle integration-testing

我的应用程序结构的上下文:

  1. root上没有任何内容,只有settings.gradle和build.gradle具有最小依赖性。
  2. 有很多模块/子项目,其中一个名为xyzintegrationtest(xyz是假名示例)
  3. 集成测试模块xyzintegrationtest有src / main,src / test和src / integrationtest
  4. src / main和src / test为空。 src / intgerationtest使用junit进行集成测试。
  5. 项目xyzintegrationtest依赖于所有项目(隐式)
  6. integrationtest build.gradle文件具有以下任务:
  7. task integrationTest(type:Test){
    ......
    }

    现在,当我在根项目上进行gradle构建(或gradlew构建)时,我希望所有项目都要编译,并且所有单元测试都要在每个子项目的src / test下运行。但它也在调用此IntegrationTest任务,并使集成测试也运行。更令人惊讶的是,它偶尔发生,而不是一贯地发生。我甚至尝试过gradle build -x integrationTest,但它仍在运行。

    所以问题是:

    1. gradle build是否运行所有类型为test的任务?那么我怎么能有只在我明确调用它时运行的任务。
    2. 如果第一个不应该发生,那么它是否在gradle中出错?
    3. 我做错了什么?结构非常扁平,所有模块/子项目处于同一级别,任务名称非常清晰,类型为:test。
    4. 感谢。

1 个答案:

答案 0 :(得分:0)

  1. 如果您已应用java插件并运行Gradle任务测试而不是yes,则将执行所有测试任务。您的集成测试运行时特定排除它可能与tern modules有关。您可能在配置块中而不是在执行块中直接使用代码。例如:

    task integrationTest(type: Test) {
        println 'This will print while in the configuration fase.'
        doLast {
            println 'This will print while the task is beeing executed.'
        }
    }
    

    如果不需要配置,您也可以这样做:

    task integrationTest(type: Test) << {
        println 'This will print while the task is beeing executed.'
    }
    

    这一切都可以在Gradle build lifcycleBuild Scripting Basics章节中找到,如果使用Gradle,这一章非常有用。

  2. 因此,如果我理解您的问题和情况,这可能不是Gradle中的错误。

  3. 参见第1点,您似乎混淆了配置和执行情况。