web-dev-qa-db-fra.com

Référence non résolue: junit

J'écris un jeu en utilisant le framework Kotlin et LibGDX. Je suis nouveau dans les tests. J'ai réussi un didacticiel de base sur la façon de créer un test simple. Et comment configurer gradle. Je viens de cliquer sur la classe et choisissez de créer un test.

Mais, lorsque j'essaie de construire un projet, j'obtiens une erreur:

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 ressemble à ceci:

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)
    }
}

Je suppose que Gradle ne voit pas Junit, mais j'ai suivi toutes les instructions. Peut-être que j'ai raté quelque chose.

   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"
}
10
icarumbas

J'ai configuré les tests junit pour libGdx + kotlin en procédant comme suit:

  1. Créez le dossier "test" dans le dossier du projet principal - ce sera le dossier racine des fichiers de code de test: [racine du projet]/core/test

  2. Ajoutez les dépendances junit dans le fichier principal gradle.build du projet à la section projet (": core"):

    project(":core") {
      ....
      dependencies {
        ...
        testCompile 'junit:junit:4.12'
        testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"
       }
     }
    
  3. Ajoutez l'ensemble de sources de test dans le fichier [racine du projet] /core/build.gradle, juste sous la ligne 'sourceSets.main.Java.srcDirs = ["src /"]':

    sourceSets.test.Java.srcDirs = ["test/"]
    
  4. Maintenant, le dossier [racine du projet]/core/test sera surligné en vert, ce qui signifie que ce dossier est reconnu comme répertoire source de test. Vous pouvez maintenant y placer un fichier .kt avec un test de junut simple, par exemple:

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

Vous devriez:

1) supprimer internal Word - ce n'est pas obligatoire

2) l'utilisation de la méthode simple assert dans les tests est incorrecte - utilisez les méthonds de org.junit.Assert.*

0

Dans mon cas, le problème était que je n'ai pas importé

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