Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 运行JUnit 5测试时,测试类只能有一个构造函数错误_Kotlin_Junit_Junit5 - Fatal编程技术网

Kotlin 运行JUnit 5测试时,测试类只能有一个构造函数错误

Kotlin 运行JUnit 5测试时,测试类只能有一个构造函数错误,kotlin,junit,junit5,Kotlin,Junit,Junit5,有人能解释为什么我在运行下面的代码时会出现这个错误吗?对其他注释(例如@MethodSource、@CsvSource)也会出现相同的错误 这是我的build.gradle文件,还有附带的错误截图。我在build.gradle中没有对JUnit4的引用,为什么它会为和ridJUnit4ClassRunner抛出错误 implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains

有人能解释为什么我在运行下面的代码时会出现这个错误吗?对其他注释(例如@MethodSource、@CsvSource)也会出现相同的错误

这是我的build.gradle文件,还有附带的错误截图。我在build.gradle中没有对JUnit4的引用,为什么它会为和ridJUnit4ClassRunner抛出错误

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0
implementation 'androidx.test.espresso:espresso-idling-resource:3.2.0'


// Android Testing Support Libraries's runner and rules
androidTestUtil 'androidx.test:orchestrator:1.3.0'
androidTestImplementation 'androidx.test:rules:1.3.0'
// Espresso UI Testing
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1' 
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'

// Android Instrumentation Tests wth JUnit 5
testImplementation "org.junit.jupiter:junit-jupiter-api:5.7.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.7.0"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.7.0"

androidTestImplementation "org.junit.jupiter:junit-jupiter-api:5.7.0"
androidTestImplementation "org.junit.jupiter:junit-jupiter-engine:5.7.0"
androidTestImplementation "org.junit.jupiter:junit-jupiter-params:5.7.0"

androidTestImplementation "de.mannodermaus.junit5:android-test-core:1.2.0"
androidTestRuntimeOnly "de.mannodermaus.junit5:android-test-runner:1.2.0"

您可以看看,它使用了Gradle和Kotlin。有关守则摘要:

build.gradle.kts

dependencies {
    // [...]

    testImplementation(platform("org.junit:junit-bom:5.7.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

tasks.test {
    useJUnitPlatform()
}
Calculator.kt

class Calculator {
    fun add(a: Int, b: Int): Int = a + b
}
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource

class CalculatorTests {
    @ParameterizedTest(name = "{0} + {1} = {2}")
    @CsvSource(
        "1,    2,   3",
        "1,  100, 101"
    )
    fun add(first: Int, second: Int, expectedResult: Int) {
        val calculator = Calculator()
        assertEquals(expectedResult, calculator.add(first, second)) {
            "$first + $second should equal $expectedResult"
        }
    }
}
CalculatorTests.kt

class Calculator {
    fun add(a: Int, b: Int): Int = a + b
}
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource

class CalculatorTests {
    @ParameterizedTest(name = "{0} + {1} = {2}")
    @CsvSource(
        "1,    2,   3",
        "1,  100, 101"
    )
    fun add(first: Int, second: Int, expectedResult: Int) {
        val calculator = Calculator()
        assertEquals(expectedResult, calculator.add(first, second)) {
            "$first + $second should equal $expectedResult"
        }
    }
}
你可以看看,它使用了Gradle和Kotlin。有关守则摘要:

build.gradle.kts

dependencies {
    // [...]

    testImplementation(platform("org.junit:junit-bom:5.7.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

tasks.test {
    useJUnitPlatform()
}
Calculator.kt

class Calculator {
    fun add(a: Int, b: Int): Int = a + b
}
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource

class CalculatorTests {
    @ParameterizedTest(name = "{0} + {1} = {2}")
    @CsvSource(
        "1,    2,   3",
        "1,  100, 101"
    )
    fun add(first: Int, second: Int, expectedResult: Int) {
        val calculator = Calculator()
        assertEquals(expectedResult, calculator.add(first, second)) {
            "$first + $second should equal $expectedResult"
        }
    }
}
CalculatorTests.kt

class Calculator {
    fun add(a: Int, b: Int): Int = a + b
}
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource

class CalculatorTests {
    @ParameterizedTest(name = "{0} + {1} = {2}")
    @CsvSource(
        "1,    2,   3",
        "1,  100, 101"
    )
    fun add(first: Int, second: Int, expectedResult: Int) {
        val calculator = Calculator()
        assertEquals(expectedResult, calculator.add(first, second)) {
            "$first + $second should equal $expectedResult"
        }
    }
}

请注意,您使用的是Junit4,而不是Junit5!看看你的堆栈跟踪。我相信
AndroidJUnit4ClassRunner
还有一些其他依赖项(可能是“androidx.test:rules:1.3.0”或“androidx.test.ext:junit:1.1.1”)。我没有看到任何关于JUnit5在android平台上可用性的报道。也许现在还不可能,最好的选择是使用JUnit4?请注意,您使用的是JUnit4,而不是Junit5!看看你的堆栈跟踪。我相信
AndroidJUnit4ClassRunner
还有一些其他依赖项(可能是“androidx.test:rules:1.3.0”或“androidx.test.ext:junit:1.1.1”)。我没有看到任何关于JUnit5在android平台上可用性的报道。也许现在还不可能,最好的选择是使用JUnit4?