Lau*_*ves 6 junit intellij-idea gradle kotlin
我按照上一个问题创建了一个Kotlin + Gradle项目.我添加了两个源文件:
package com.example.hello
fun main(args : Array<String>) {
println("Hello, world!")
}
Run Code Online (Sandbox Code Playgroud)
package com.example.hello
import org.junit.Assert
import org.junit.Test
class HelloWorldTest {
@Test
fun testPasses() {
Assert.assertTrue(true)
}
@Test
fun testFails() {
Assert.assertTrue(false)
}
}
Run Code Online (Sandbox Code Playgroud)
我还将目录标记src/为源根目录和test/测试源根目录.
如果我在其他地方创建与这些源文件完全相同的目录结构并在其周围创建一个非Gradle IntelliJ项目,我能够编译并运行此代码,包括测试.
但是,在我的项目的Gradle版本中,我无法从IntelliJ IDEA构建测试.我收到以下错误:
Error:(3, 12) Kotlin: Unresolved reference: junit
Error:(4, 12) Kotlin: Unresolved reference: junit
Error:(7, 6) Kotlin: Unresolved reference: Test
Error:(9, 9) Kotlin: Unresolved reference: Assert
Error:(12, 6) Kotlin: Unresolved reference: Test
Error:(14, 9) Kotlin: Unresolved reference: Assert
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我运行gradle test(或./gradlew test在构建包装器之后)构建成功而没有错误,但测试不会运行.
您需要将 JUnit 作为依赖项添加到您的build.gradle(根范围):
dependencies {
//...
testCompile "junit:junit:4.12"
}
Run Code Online (Sandbox Code Playgroud)
它是一个比较复杂的Junit的5,它需要配置的JUnit插件摇篮中build.gradle
由于 IntelliJ IDEA 解释您的 Gradle 项目并将其内部项目表示与 Gradle 项目同步,因此刷新后它将在测试类路径中看到 JUnit。
如果您运行test任务,Gradle 将运行测试,无论是通过gradlew test在终端中运行还是在 IntelliJ IDEA 中运行:Gradle 项目(右侧面板)?任务?验证?测试。
正如#1 中所说,IntelliJ IDEA 有自己的项目表示,它实际上可能与它从 Gradle 项目导入的不同(例如,如果您手动标记为与 Gradle 项目布局定义的目录不同的源目录)。
您可以build.gradle通过运行刷新所有 Gradle 项目操作(可以在Gradle 项目面板中找到)使 IntelliJ IDEA 与您的项目结构同步,或者在设置中为您的 Gradle 项目启用使用自动导入。
| 归档时间: |
|
| 查看次数: |
4164 次 |
| 最近记录: |