Java Surefire classpathDependencyExclude的渐变等效项

Java Surefire classpathDependencyExclude的渐变等效项,java,maven,gradle,build,maven-surefire-plugin,Java,Maven,Gradle,Build,Maven Surefire Plugin,我正在尝试将java项目从maven迁移到gradle。现在的问题是测试的类路径依赖配置非常棘手 我们的maven surefire插件配置: <includes> <include>**/SomeTest1.java</include> </includes> <classpathDependencyExcludes> <classpathDependencyExclude>com.sun.jer

我正在尝试将java项目从maven迁移到gradle。现在的问题是测试的类路径依赖配置非常棘手

我们的maven surefire插件配置:

 <includes>
     <include>**/SomeTest1.java</include>
 </includes>
 <classpathDependencyExcludes>
     <classpathDependencyExclude>com.sun.jersey:jersey-core</classpathDependencyExclude>
 </classpathDependencyExcludes>

**/SomeTest1.java
泽西岛:泽西岛核心

不同的测试类有不同的类路径。如何使用Gradle实现它?

使用下一个解决方法:

  • 为所需的测试创建源集
  • 为已创建的源集添加配置
  • 添加带有自定义配置的运行测试任务
  • 根据自定义测试任务配置测试任务
  • 为生成漂亮的html报告配置报告插件:)

  • 像这样

    首先,您需要将测试源区分为不同的源集。比方说,我们需要从包org.foo.test.rest运行测试,与其他测试相比,运行时类路径稍有不同。因此,它的执行将转到其他测试,其中剩余的测试位于测试:

    sourceSets {
        otherTest {
            java {
                srcDir 'src/test/java'
                include 'org/foo/test/rest/**'
            }
            resources {
                srcDir 'src/test/java'
            }
        }
        test {
            java {
                srcDir 'src/test/java'
                exclude 'org/foo/rest/test/**'
            }
            resources {
                srcDir 'src/test/java'
            }
        }
    }
    
    configurations {
        testRuntime {
            exclude group: 'org.conflicting.library'
        }
    }
    
    task otherTest(type: Test) {
        testClassesDir = sourceSets.otherTest.output.classesDir
        classpath += sourceSets.otherTest.runtimeClasspath
    }
    
    check.dependsOn otherTest
    
    之后,您应该确保otherTest正确设置了所有必需的编译和运行时类路径:

    otherTestCompile sourceSets.main.output
    otherTestCompile configurations.testCompile
    otherTestCompile sourceSets.test.output
    otherTestRuntime configurations.testRuntime + configurations.testCompile
    
    最后一件事是从测试中排除(或包括)不需要的运行时捆绑包:

    sourceSets {
        otherTest {
            java {
                srcDir 'src/test/java'
                include 'org/foo/test/rest/**'
            }
            resources {
                srcDir 'src/test/java'
            }
        }
        test {
            java {
                srcDir 'src/test/java'
                exclude 'org/foo/rest/test/**'
            }
            resources {
                srcDir 'src/test/java'
            }
        }
    }
    
    configurations {
        testRuntime {
            exclude group: 'org.conflicting.library'
        }
    }
    
    task otherTest(type: Test) {
        testClassesDir = sourceSets.otherTest.output.classesDir
        classpath += sourceSets.otherTest.runtimeClasspath
    }
    
    check.dependsOn otherTest
    
    并为其他测试创建测试梯度任务:

    sourceSets {
        otherTest {
            java {
                srcDir 'src/test/java'
                include 'org/foo/test/rest/**'
            }
            resources {
                srcDir 'src/test/java'
            }
        }
        test {
            java {
                srcDir 'src/test/java'
                exclude 'org/foo/rest/test/**'
            }
            resources {
                srcDir 'src/test/java'
            }
        }
    }
    
    configurations {
        testRuntime {
            exclude group: 'org.conflicting.library'
        }
    }
    
    task otherTest(type: Test) {
        testClassesDir = sourceSets.otherTest.output.classesDir
        classpath += sourceSets.otherTest.runtimeClasspath
    }
    
    check.dependsOn otherTest
    

    我这样做了,但在项目上找不到参数[主类]的otherTestCompile()方法。有什么想法吗?