Kotlin 运行JUnit 5测试时,测试类只能有一个构造函数错误
有人能解释为什么我在运行下面的代码时会出现这个错误吗?对其他注释(例如@MethodSource、@CsvSource)也会出现相同的错误 这是我的build.gradle文件,还有附带的错误截图。我在build.gradle中没有对JUnit4的引用,为什么它会为和ridJUnit4ClassRunner抛出错误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
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?