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

带有Kotlin的Junit5测试套件

漆雕疏珂
2023-03-14

基于此链接中的答案,创建了一个包含测试类的测试套件

@RunWith(Suite::class)
@Suite.SuiteClasses(
    DTOtoEntityMapperTest::class,
    PostDataSourceCoroutinesTest::class,
    PostDataSourceRxJava3Test::class
)
class JUnit5TestSuite

返回错误

org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.x.DTOtoEntityMapperTest':
  1. No runnable methods

但是每个添加的测试类都有测试方法,并且单独运行

class DTOtoEntityMapperTest {

    private val postDTOList by lazy {
        convertFromJsonToObjectList<PostDTO>(getResourceAsText(RESPONSE_JSON_PATH))!!
    }

    private val postEntityList by lazy {
        convertFromJsonToObjectList<PostEntity>(getResourceAsText(RESPONSE_JSON_PATH))!!
    }

    @Test
    fun `given PostDTO is input, should return PostEntity`() {

        val mapper = DTOtoEntityMapper()

        // GIVEN
        val expected = postEntityList

        // WHEN
        val actual = mapper.map(postDTOList)

        // THEN
        Truth.assertThat(actual).containsExactlyElementsIn(expected)
    }
}

共有3个答案

马权
2023-03-14

经过几天的检查,我找到了正确的libs,可以使用带有kotlin的JUnit5测试套件

在build.gradle中,添加2个库如下:

testImplementation ("org.junit.platform:junit-platform-suite-api:1.7.0")
testImplementation ("org.junit.platform:junit-platform-runner:1.2.0")

然后您可以使用测试套件如下:

import org.junit.platform.runner.JUnitPlatform
import org.junit.platform.suite.api.SelectClasses
import org.junit.platform.suite.api.SelectPackages
import org.junit.runner.RunWith


@RunWith(JUnitPlatform::class)
@SelectClasses(BasicMockKUnitTest::class, HierarchicalMockKUnitTest::class)
@SelectPackages("exercise")
class TestAllSelectPackage {
}
端木兴国
2023-03-14

对于JUnit 5,我使用了JUnitPlatform和SelectClasses(或SelectPackages):

@RunWith(JUnitPlatform::class)
@SelectClasses(Some1Test::class, Some2Test::class)
class SuiteTest
淳于祺
2023-03-14

现在,您可以完全使用jUnit 5引擎运行套件:

import org.junit.platform.suite.api.SelectClasses
import org.junit.platform.suite.api.Suite

@Suite
@SelectClasses(BasicMockKUnitTest::class, HierarchicalMockKUnitTest::class)
@SelectPackages("exercise")
class TestAllSelectPackage {
}

您必须导入< code > JUnit-platform-suite-engine :

https://search.maven.org/artifact/org.junit.platform/junit-platform-suite-engine

这里有一些文档:

https://junit.org/junit5/docs/snapshot/user-guide/#launcher-api-engines-customhttps://junit.org/junit5/docs/snapshot/api/org.junit.platform.suite.engine/org/junit/platform/suite/engine/package-summary.html

这里有一个官方的例子:

https://github . com/JUnit-team/JUnit 5/blob/main/documentation/src/test/Java/example/suite demo . Java

 类似资料:
  • 我们打算将基于JUnit4的项目升级到JUnit5。我按照JUnit5官方网站的说明修改了JUnit4套件:https://JUnit . org/JUnit 5/docs/current/user-guide/# running-tests-JUnit-platform-runner-test-suite。在命令行中使用mvn test时没有执行测试:< code > mvn test-Dtes

  • 我有一个测试套件: 一类: B类: 现在的问题是位于下, 和 类正在。如果我评论带有测试服运行正常,但未注释,我得到: java.lang.非法状态异常: 无法加载应用程序上下文 在org . spring framework . test . context . cache . defaultcacheawarecontextloaderdelegate . load context(defau

  • 在为Neo4j编写测试用例时,我希望只使用JUnit5扩展模型,而不使用或。目前,我只能找到JUnit4的Neo4j测试包,它使用,并且依赖于和。 是否有使用扩展模型的JUnit5的Neo4j测试套件? 参考: Neo4j:Home,GitHub Neo4j:Maven,GitHub,pom.xml JUnit 4:GitHub JUnit 4:JUnit 4指南,JUnit 4.12 API,N

  • 我有一个简单的存储库,它的界面是用Kotlin写的,从数据库获得一个网站列表;并且我用Spring缓存缓存响应: 现在我想测试缓存是否真的起作用。作为测试的基础,我使用了如何在Spring数据存储库上测试Spring的声明性缓存支持?但是直接实现会导致存储库是代理而不是存储库的错误。所以我现在的尝试是: 但是缓存是空的,并且在第一次读取之后没有填充。我在设置中遗漏了什么? 更新: 使用George

  • 我有一个工作环境,包括我不管理的bom和JUnit5测试,除非我从如果我从它们不会被maven surefire插件拾取。我阅读了许多部分,并在一个较小的项目中进行了测试,它的工作和拾取,我不知道该在这篇文章中包含什么,因此您有足够的信息来查看问题所在。此外,如果有人能解释我阅读的导入的幕后内容,JUnit 4和5都需要使用surefire即 与版本 我很感激。 注意到 < li >我的测试都在s

  • 我有一个spring-boot应用程序,它使用spring-boot版本。为了测试这个应用程序,我想使用junit-jupiter版本。 对于简单的服务测试,它没有任何问题。但是当涉及到测试restendpoint时,我失败了。原因是注释,我在junit4中使用了它来连接所有内容。 在Spring-Boot2之前,junit5是否有? 更新 我只是偶然发现了一篇关于如何运行JUnit5测试的文章。