【问题标题】:JUnit tests works fine into Eclipse but don't work with "build gradle" command. Its failing with dependency errorJUnit 测试在 Eclipse 中运行良好,但不适用于“build gradle”命令。它因依赖错误而失败
【发布时间】:2021-10-31 06:53:15
【问题描述】:

Java 版本:1.8
Gradle 版本 5.6.4
JUNIT:junit-jupiter:5.7.0
所以:Linux

我有这个项目结构:

项目
1.域名
2.核心
3.批处理

该项目有 4 个文件“build.gradle”,每个上下文和主文件各 1 个,示例:

Main Build.Gradle(根文件夹):

configurations {
    compileClasspath
}

subprojects {
    group = 'project'
    version = 'project-1.0.0'
    apply plugin: 'java'
    apply plugin: 'eclipse'

    sourceCompatibility = 1.8

    repositories {
        mavenCentral()

        maven {
            url fintecc_aws_url
            credentials(AwsCredentials) {
                accessKey fintecc_aws_userkey
                secretKey fintecc_aws_secretkey
            }
        }
    }
    
    jar {
        version = "0.1-SNAPSHOT"
        from ("${projectDir}/src/main/java") {
            include("**/*.json")
            include("**/*.html")
        }
    }

    ext {
        fffCommonsVersion = "2.0.11-BETA15"
        orgProjectLombok = "1.16.8"
        slf4jLogVersion = "1.7.5"
        commonsIoCommonsIo = 2.6
        //
        //
        testJunitVersion = "5.3.1"
        testMockitoVersion = "2.23.4"
    }

    dependencies {
        //
        // Lombok
        compileOnly("org.projectlombok:lombok:${orgProjectLombok}")
        testCompileOnly("org.projectlombok:lombok:${orgProjectLombok}")
        annotationProcessor("org.projectlombok:lombok:${orgProjectLombok}")
        testAnnotationProcessor("org.projectlombok:lombok:${orgProjectLombok}")     
        //
        // Junit/Tests
        testImplementation("org.junit.jupiter:junit-jupiter:5.7.0")
        testImplementation("org.mockito:mockito-core:2.23.4")
        //
        // Commons and Log
        compile("fff.commons:serverless:${fffCommonsVersion}")
        implementation("org.slf4j:slf4j-log4j12:${slf4jLogVersion}")
        compile("commons-io:commons-io:${commonsIoCommonsIo}")
    }

    test {
        useJUnitPlatform()
    }
}

每个子项目build.gradle(batch/文件夹):

project(':batch') {
        sourceCompatibility = 1.8
    
        eclipse {
                project {
                        name = 'ttt_project_batch'
                }
        }
    
        dependencies {
            compile project(':core'),
            "com.amazonaws:aws-java-sdk-sqs:1.11.586",
            "com.amazonaws:aws-java-sdk-s3:1.11.250",
            "com.amazonaws:aws-lambda-java-core:1.0.0",
            "mysql:mysql-connector-java:6.0.2"
        }
        
        jar {
            baseName = 'batch'
            version = '0.1-SNAPSHOT'
                
            from {
                configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
            }
        
            from ("${projectDir}/src/main/java") {
                include("**/*.json")
                include("**/*.xml")
            }
        
            into('lib') {
                from configurations.compile
            }
        
            manifest {
                def manifestFile = "${projectDir}/META-INF/MANIFEST.MF"
                if (new File(manifestFile).exists()) {
                    from File(manifestFile)
                }
                else {
                    manifest.attributes(
                        'Main-Class': 'config.BatchConfig',
                        "Project":project.name,
                        "Specification-Vendor":"XXXXX",
                        "Created-By":org.gradle.internal.jvm.Jvm.current())
                }
            }
        }
    }

我的 settings.gradle 文件:

include 'domain', 'core', 'batch'

好的,项目编译正确。当我添加 JUNIT 测试时,我能够在 Eclipse 中完美运行...进入 batch/src/test/java/

但是当我在终端运行命令“build gradle”来生成 JAR 文件时,JUNIT 的依赖没有被识别,像这样:

Execution failed for task ':batch:compileTestJava'.

error: package org.junit does not exist
    import static org.junit.Assert.assertEquals;

有人经历过吗?我相信原因是项目正在模块化

【问题讨论】:

    标签: java gradle junit


    【解决方案1】:

    我发现了问题 我正在使用 JUNIT 5,但我的依赖项是 JUNIT 4-

    在我的 Eclipse 工作中,因为我过去手动导入了 JUNIT 4...我不记得了

    我只是替换:

    导入静态 org.junit.Assert.assertEquals

    导入静态 org.junit.jupiter.api.Assertions.assertEquals

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2014-01-31
      • 2020-10-17
      • 1970-01-01
      相关资源
      最近更新 更多