gradle集成测试不起作用,单元测试运行两次

时间:2018-06-08 03:30:41

标签: java gradle integration-testing

我有这个根 build.gradle

repositories {
    jcenter()
}

subprojects  {

    apply plugin: 'java'

    group 'me.someone'
    version '1.0.0'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        jcenter()
        mavenCentral()
    }

    dependencies {
        testImplementation 'junit:junit:4.12'
    }

}

然后我有这个孩子 build.gradle

plugins {
    id 'java-library'
    id 'eclipse'
    id "org.springframework.boot" version "2.0.1.RELEASE"
    id 'io.spring.dependency-management' version "1.0.5.RELEASE"
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile project(':foo-jar')

    testImplementation('org.springframework.boot:spring-boot-starter-test')
    testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.18.3'

}

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }

    test {
        java.srcDir file('src/int/java')
    }

    itest {
        java {
            srcDir file('src/itest/java')
        }
        //resources.srcDir 'src/itest/resources'
    }
}


test {
    testLogging {
        showStandardStreams = true
        events "passed", "skipped", "failed"
        exceptionFormat = 'full'
    }   
}

task itest(type: Test) {
  testLogging {
        showStandardStreams = true
        events "passed", "skipped", "failed"
        exceptionFormat = 'full'
   }
   itest.mustRunAfter test
}

check.dependsOn itest

bootRun {
    main = 'me.someone.BarServiceApplication'
}

问题是单元测试运行两次但不是集成测试。为什么单元测试运行两次而不是集成测试?我的理解是,当我提供集成测试的源文件夹时,它也应该运行集成测试。

1 个答案:

答案 0 :(得分:0)

您的任务itest需要拥有testClassesDirs configured,这就是它目前正在运行两次单元测试的原因。它可能还需要classpath configured

您应该查看how to do integration tests上的Gradle文档了解所有详细信息。