当前位置: 首页 > 知识库问答 >
问题:

JUnit测试在Eclipse中运行良好,但不能使用“build gradle”命令。它失败了,出现了依赖错误

董鸣
2023-03-14

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

我有这个项目结构:

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

这个项目有4个文件"build.gradle",1为每个上下文和主,例如:

主构建。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()
    }
}

每个子项目构建(批处理/文件夹):

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中完美地运行…进入批处理/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;

有人经历过这种情况吗?我认为原因是项目被模块化了

共有1个答案

谷彦君
2023-03-14

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

在我的日食作品中,因为我过去曾手动导入过 JUNIT 4...我不记得了

我只是替换:

导入静态组织.junit.Assert.assertEquals

以导入静态组织.junit.jupiter.api.Assertions.assertEquals

 类似资料:
  • 我正在做一个对我来说很新的项目,但已经有一段时间了。

  • 我的maven项目有一些问题。我在我的maven文件夹src/test/java中创建了一些JUnit测试。 如果我在命令行或Eclipse IDE中使用“mvn清理安装”创建了我的maven项目,并使用“清理”和“安装”等运行配置,所有测试都将正常运行,不会发生一些错误。 但是,如果我手动运行 JUnit 测试,其中一个 Junit 测试将失败。但是什么原因,为什么maven没有意识到这个事实呢

  • 用编译后,我尝试用java运行,它运行了,但随后抛出了一个

  • 我的Junit测试使用DBUnit,从Eclipse运行时运行良好。但是,使用Maven运行相同的测试会导致以下一项测试失败: 我已经连续几次尝试从EclipseGUI(“作为JUnit测试运行”)运行该测试和整个测试集,但它们从未失败——但从Maven来看,它们确实失败了。 我对每个测试都使用@数据库设置,但这足以真正重置数据库吗?我还认为Maven可能会并行运行测试,所以我尝试在pom.xml

  • 我已经使用TestNG注释和maven创建了脚本。它在Eclipse中运行,我也尝试运行testng。xml文件,看起来不错。然后我配置了Jenkins,但现在它没有运行。Jenkins给出的错误如下:(仅供参考:我以前已经成功构建了Jenkins,这怎么可能在一天内打破?) 在端口48847上启动ChromeDriver 72.0.3626.69(3C16F8A135ABC0D4DA2DF338

  • 我尝试在Eclipse Oxygo4.7上使用Java9。显然,我已经安装了Java9对marketplace氧气的支持。我无法让junit测试工作。我用两个类创建了简单的maven项目: null null 如何在Eclipse中使用Java9运行这个测试?