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

运行gradle测试时,在嵌套的Kotlin类中找不到JUnit测试

冯沛
2023-03-14

当我在Kotlin中的嵌套类中指定测试时,如下所示。。。

import org.junit.jupiter.api.*

class ParentTest
{
    @Nested
    class NestedTest
    {
        @Test
        fun NotFoundTest() {}
    }

    @Test
    fun FoundTest() {}
}

...当使用gradle运行测试时,JUnit无法识别它。只有FoundTest被找到并运行。

我使用的是JUnit 5.1、Kotlin 1.2.30和Gradle 4.6。

共有2个答案

文鸣
2023-03-14

文件中:

只有非静态嵌套类(即内部类)可以用作@nested测试类。

因此,您需要使NestedTest成为内部的类。

蒋哲
2023-03-14

将嵌套类定义为内部类可以解决这个问题。

class ParentTest
{
    @Nested
    inner class NestedTest
    {
        @Test
        fun InnerTestFound() {}
    }

    @Test
    fun FoundTest() {}
}

正如Sam Brannen所指出的,“默认情况下,Kotlin中的嵌套类类似于Java中的静态类”,JUnit文档指出:

只有非静态嵌套类(即内部类)可以用作@nested test类。

在Kotlin中将类标记为internal,编译为非静态Java类。

 类似资料:
  • 我已经从https://howtodoinjava.com/spring-batch/java-config-multiple-steps/'复制了Spring批处理程序。 我从https://docs.spring.io/spring-batch/docs/current/reference/html/testing.html创建了以下JUnit测试用例: 我的Maven pom文件是: 谢谢

  • 我有一个项目结构: 我用mvn clean:install构建了它,并创建了jar文件。现在,我想使用命令行运行QbsApplicationTests。为此,我在一个目录中放入了两个罐子: 并执行以下命令: 然而,我不断得到以下错误 问题: 我应该如何从控制台运行QbsApplicationTests测试 编辑我还尝试添加以下内容: 到主类,但Intellij一直说无法解析。

  • 问题内容: 在Eclipse中运行JUnit测试时出现此错误: 尽管我正在使用maven,但我尝试在类路径中添加库,而JUnit库位于POM依赖项中。 我已经尝试清理项目,并使用Eclipse的JUnit插件创建了一个新的JUnit测试用例,但仍然遇到相同的错误。 问题答案: 出现这种情况的原因是,使用时只有源代码正在编译(我使用的是maven 3.1.0,所以我不确定它是否始终如此)。 如果运行

  • 我想运行一个junit4测试套件,并在构建中使用过滤器指定它。gradle,但gradle(版本2.10)没有找到测试。有没有办法在gradle中运行指定的junit测试套件? 我的测试套件类 build.gradle

  • 我使用的是Eclipse Oxygen.3版本(4.7.3)。以下是我的JUnit测试类: 当我运行这个JUnit测试时,eclipse不断弹出对话框,告诉“在测试运行程序'JUnit 5'中找不到测试”。为什么?

  • 问题内容: 我有一个Maven程序,它可以正常编译。当我运行它时,它不会运行任何测试(在TESTs标头下显示)。 我已经用一个超级简单的设置重新创建了这个问题,我将在下面以及运行时将其包括在内-X。 单元测试可以从eclipse正常运行(都使用其默认的junit软件包,而当我包括maven下载的junit.jar时)。而且可以在下正确创建该类。我在带有Maven 3.0.2和Java 1.6.0_