未解决的参考:junit

时间:2017-12-18 15:05:30

标签: java gradle junit libgdx kotlin

我正在使用Kotlin和LibGDX框架编写游戏。我是新手测试人员。我已经通过了一些基础教程如何创建简单的测试。以及如何配置gradle。我只是点击了课程并选择了创建测试。

但是,当我尝试构建项目时,我得到一个错误:

e: /Users/maximternovtsi/bagel/core/src/test/test/BagelTest.kt: (1, 12): Unresolved reference: junit
e: /Users/maximternovtsi/bagel/core/src/test/test/BagelTest.kt: (2, 12): Unresolved reference: junit
e: /Users/maximternovtsi/bagel/core/src/test/test/BagelTest.kt: (6, 6): Unresolved reference: Test
e: /Users/maximternovtsi/bagel/core/src/test/test/BagelTest.kt: (8, 9): Unresolved reference: Assertions
e: /Users/maximternovtsi/bagel/core/src/test/test/BagelTest.kt: (11, 6): Unresolved reference: Test
e: /Users/maximternovtsi/bagel/core/src/test/test/BagelTest.kt: (13, 9): Unresolved reference: Assertions

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':core:compileKotlin'.

BagelTest看起来像这样:

import org.junit.jupiter.api.Test

import org.junit.jupiter.api.BeforeEach


internal class BagelTest {


    @BeforeEach
    internal fun setUp() {
    }

    @Test
    internal fun passes() {
        assert(true)
    }
}

我猜这个gradle没有看到junit,但是我遵循了所有说明。也许我错过了什么。

   buildscript {
    repositories {

        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath 'org.multi-os-engine:moe-gradle:1.4.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.51"
    }
}

allprojects {
    apply plugin: "eclipse"
    apply plugin: "idea"

    version = '1.0'
    ext {
        appName = "Bagel"
        gdxVersion = '1.9.8'
        junitJupiterVersion  = '5.0.2'
    }

    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    }
}

project(":desktop") {
    apply plugin: "kotlin"

    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
    }
}

project(":android") {
    apply plugin: "android"
    apply plugin: "kotlin-android"

    configurations { natives }

    dependencies {
        compile project(":core")
        compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.51"
        compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"
        compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
    }
}

project(":core") {
    apply plugin: "kotlin"

    /*kotlin {
        experimental {
            coroutines 'enable'
        }
    }*/

    sourceSets.test.java.srcDirs = ["/test"]

    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.51"
        compile "com.badlogicgames.ashley:ashley:1.7.3"

        testCompile("org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}")
//        testCompile "org.mockito:mockito-core:2.2.7"
    }
}

tasks.eclipse.doLast {
    delete ".project"
}

6 个答案:

答案 0 :(得分:2)

我已经通过以下步骤为libGdx + kotlin配置了junit测试:

  1. 在核心项目文件夹中创建'test'文件夹 - 它将是测试代码文件的根文件夹:[project-root] / core / test

  2. 将项目main gradle.build文件中的junit依赖项添加到项目(“:core”)部分:

    project(":core") {
      ....
      dependencies {
        ...
        testCompile 'junit:junit:4.12'
        testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"
       }
     }
    
  3. 在[project-root] /core/build.gradle文件中添加测试源集,位于'sourceSets.main.java.srcDirs = [“src /”]'行下面:

    sourceSets.test.java.srcDirs = ["test/"]
    
  4. 现在[project-root] / core / test文件夹将以绿色突出显示,这意味着此文件夹被识别为测试源目录。现在,您可以使用简单的junut测试放置.kt文件,例如:

    import org.junit.Test
    import kotlin.test.assertEquals
    
    class SimpleTest{
    
        @Test
        fun testEquals(){
            var b=true
            assertEquals(true,b)
        }
    }
    

答案 1 :(得分:1)

在应用gradle中

替换测试实施 androidTestImplementation

答案 2 :(得分:0)

你应该:

1)删除internal字 - 不需要

2)在测试中使用简单的assert方法是错误的 - 使用来自org.junit.Assert.*的方法

答案 3 :(得分:0)

在我的情况下,问题是我没有导入

androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"

答案 4 :(得分:0)

我正在使用Android Studio 4.0版本,并且在android项目中已经有一个(测试)软件包,它是默认软件包,我已经将kotlin测试文件放在了那里,并且没有问题。我还没有运行文件,但是junit等没有导入错误。我希望这会有所帮助。

答案 5 :(得分:0)

首先确保 build.gradle.kts (project) 中定义的 kotlin 版本与 selected in the compiler 相同。

plugins {
    kotlin("jvm") version "1.4.21" apply false
}

如果这些版本没有效果但仍然无法正常工作,请继续执行以下步骤:


  1. 删除所有缓存文件夹,包括:

    • .gradle
    • .idea
  2. 使缓存无效/重新启动...

  3. 打开任何 gradle 文件 (settings.gradle.kts)

  4. 在 IDE 的右上角点击 Link Gradle project

Link Gradle project

  1. 最后,指定应使用 JUnit 5 来​​执行测试

build.gradle.kts

tasks.test {
    useJUnitPlatform()
}

注意:此行为可以定义为 by gradlefrom the IDE


如果它可以工作并且您有依赖项,那很可能是缓存问题或 gradle 配置。

GL