当前位置: 首页 > 知识库问答 >
问题:

我如何让我的JUnit测试在我的Kotlin Gradle项目中编译和运行?

栾景胜
2023-03-14

根据前面的问题,我创建了一个静态编程语言Gradle项目。我向其中添加了两个源文件:

package com.example.hello

fun main(args : Array<String>) { 
  println("Hello, world!") 
}
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)
    }
}

我还将目录src标记为源根,将测试标记为测试源根。

如果我在别处创建与这些源文件完全相同的目录结构,并围绕它创建一个非渐变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

奇怪的是,如果我在构建包装器后运行gradle测试(或者在构建包装器后运行gradlew测试),构建会成功而没有错误,但测试不会运行。

  1. 我如何以IntelliJ IDEA可以看到的方式添加JUnit

共有1个答案

李良策
2023-03-14

您需要将JUnit作为依赖项添加到构建中。gradle(根范围):

dependencies {
    //... 
    testCompile "junit:junit:4.12"
}

对于JUnit 5来说有点复杂,它需要在build.gradle配置JUnit Gradle插件

>

如果您运行test任务,Gradle将通过在终端或IntelliJ IDEA中运行gradlew test来运行测试:Gradle项目(右侧面板)→任务→验证→测试。

如#1所述,IntelliJ IDEA有自己的项目表示法,实际上可能不同于它从Gradle项目导入的内容(例如,如果您手动将不同于Gradle项目布局定义的目录标记为源目录)。

您可以使IntelliJ IDEA将其项目结构与您的构建同步。gradle通过运行“刷新所有gradle项目”操作(可以在“gradle项目”面板中找到),或在“设置”中为gradle项目启用“使用自动导入”。

 类似资料:
  • 问题内容: 正确,我的junit测试看起来像是一个漫长的故事: 我创建了4位用户 我删除了1位用户 我尝试使用已删除的用户登录,并确保失败 我使用剩余的3个用户之一登录并确认我可以登录 我从一个用户向另一个用户发送一条消息,并验证该消息是否出现在发件人的发件箱和收件人的收件箱中。 我删除邮件 … … 优点 :测试非常有效(非常善于检测错误)并且非常稳定,因为它们仅使用API​​,如果我重构代码,那

  • 问题内容: 我的junit测试看起来像是一个漫长的故事: 我创建了4位用户 我删除了1位用户 我尝试使用已删除的用户登录,并确保失败 我使用剩余的3个用户之一登录并确认我可以登录 我从一个用户向另一个用户发送一条消息,并验证该消息是否出现在发件人的发件箱和收件人的收件箱中。 我删除邮件 … … 优点:测试非常有效(非常善于检测错误)并且非常稳定,因为它们仅使用API​​,如果我重构代码,那么测试也

  • 我想并行运行我的测试,这样可以节省时间,我确实在宁静中找到了一个选项,我们可以批量运行测试,但不能并行运行,而且cucumber并行似乎很有前途,下面的链接是针对maven项目的,运行宁静-cucumber并行测试用例有任何关于宁静/JS和npm的建议吗?

  • 我正在尝试使用gradle编译一个war文件以部署到JBoss 7.1 AS,但编译失败(找不到ServletContext)…… gradle.build.见下文 错误: /workspace/agile runner/src/main/Java/com/agile runner/web/config/agilerunnerapplicationinitializer . Java:20:找不到

  • 问题内容: 我想让Maven2为我的应用程序生成.jnlp(webstart配置文件)。 有一个maven-jnlp-plugin,但自Maven 1.1-beta2以来的某个地方已不推荐使用。 有没有更优选的方法来执行此操作,或者我需要自己构建此功能? 问题答案: 还有用于maven2的webstart-maven-plugin