gradle构建不跳过(始终调用)集成测试

gradle构建不跳过(始终调用)集成测试,gradle,integration-testing,Gradle,Integration Testing,我的应用程序结构的上下文: 根目录上没有任何内容,只有settings.gradle和build.gradle,依赖性最小 有许多模块/子项目,其中一个名为xyzintegrationtest(xyz是假示例名) 集成测试模块xyzintegrationtest有src/main、src/test和src/integrationtest src/main和src/test为空。src/intgerationtest使用junit进行集成测试 项目xyzintegrationtest依赖于所有项目

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

  • 根目录上没有任何内容,只有settings.gradle和build.gradle,依赖性最小
  • 有许多模块/子项目,其中一个名为xyzintegrationtest(xyz是假示例名)
  • 集成测试模块xyzintegrationtest有src/main、src/test和src/integrationtest
  • src/main和src/test为空。src/intgerationtest使用junit进行集成测试
  • 项目xyzintegrationtest依赖于所有项目(隐式)
  • integrationtest build.gradle文件具有以下任务:
  • 任务集成测试(类型:测试){
    ……
    }

    现在,当我在根项目上执行gradlebuild(或gradlew build)时,我希望所有项目都能编译,所有单元测试都要运行,它们都在每个子项目的src/test下。但是它也调用这个integrationTest任务,并使集成测试也运行。更令人惊讶的是,它偶尔发生,而不是始终如一。我甚至尝试过gradle build-x integrationTest,但它仍然可以运行

    所以问题是:

  • gradle build是否运行所有类型测试的任务?那个么,我怎么能让任务只在显式调用它时运行呢
  • 如果第一次不应该发生,这是格雷德尔的错误吗
  • 我做错什么了吗?结构非常扁平,所有模块/子项目处于同一级别,任务名称非常清楚,类型为:test
  • 谢谢

  • 例如,如果应用了java插件并运行Gradle任务测试,那么所有测试任务都将执行。您的integrationtest运行时,特别是排除它可能与。您可以将代码直接放在配置块中,而不是执行块中。例如:

    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.'
    }
    

    task integrationTest(type:Test)谢谢,由于某种原因,当我调用gradle integrationTest时,它甚至没有运行,它从来没有运行过测试。然而,下面的内容帮助我完成了工作:check.dependsOn-=integrationTest