Gradle 等效于 Surefire 类路径DependencyExclude

Posted

技术标签:

【中文标题】Gradle 等效于 Surefire 类路径DependencyExclude【英文标题】:Gradle equivalent of Surefire classpathDependencyExclude 【发布时间】:2015-11-19 10:06:09 【问题描述】:

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

我们的 maven-surefire-plugin 配置:

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

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

【问题讨论】:

【参考方案1】:

使用下一个解决方法:

    为所需测试创建源集 为创建的源集添加配置 使用自定义配置添加运行测试任务 配置测试任务dependOn自定义测试任务 配置报告插件以生成漂亮的 html 报告:)

点赞getting started

【讨论】:

【参考方案2】:

首先,您需要将测试源分成不同的源集。比如说,我们需要从包 org.foo.test.rest 运行测试,运行时类路径与其他测试略有不同。因此,它的执行将转到 otherTest,剩下的测试在 test 中:

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'
        
    

之后,您应该确保 otherTest 已正确设置所有必需的编译和运行时类路径:

otherTestCompile sourceSets.main.output
otherTestCompile configurations.testCompile
otherTestCompile sourceSets.test.output
otherTestRuntime configurations.testRuntime + configurations.testCompile

最后一件事是从 test 中排除(或包含)不需要的运行时包:

configurations 
    testRuntime 
        exclude group: 'org.conflicting.library'
    

并为 otherTest 创建 Test Gradle 任务:

task otherTest(type: Test) 
    testClassesDir = sourceSets.otherTest.output.classesDir
    classpath += sourceSets.otherTest.runtimeClasspath


check.dependsOn otherTest

【讨论】:

我这样做并得到了&gt; Could not find method otherTestCompile() for arguments [main classes] on project。有什么想法可能是错的吗?

以上是关于Gradle 等效于 Surefire 类路径DependencyExclude的主要内容,如果未能解决你的问题,请参考以下文章

如何找到Surefire / Junit4测试将搜索的类路径?

如何将 maven 插件转换为 gradle 插件(maven-surefire-puglin)?

用于指定源搜索路径的 LLDB 等效于 gdb“目录”命令?

Symfony4等效于显示当前路径

JavaScript 等效于 jQuery 的扩展方法

Spring Boot Multi Module Gradle Project 类路径问题:Package Not Found, Symbol not Found