Unit testing 带有Kotlin的Junit5测试套件

Unit testing 带有Kotlin的Junit5测试套件,unit-testing,kotlin,junit5,Unit Testing,Kotlin,Junit5,基于中的答案,创建了一个包含测试类的测试套件 @RunWith(Suite::class) @Suite.SuiteClasses( DTOtoEntityMapperTest::class, PostDataSourceCoroutinesTest::class, PostDataSourceRxJava3Test::class ) class JUnit5TestSuite 返回错误 org.junit.runners.model.InvalidTestClassE

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

@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)
    }
}
类DTotoEntityAppertest{
lazy的私人val postDTOList{
convertFromJsonToObjectList(getResourceAsText(响应\u JSON\u路径))!!
}
lazy提供的私有val postEntityList{
convertFromJsonToObjectList(getResourceAsText(响应\u JSON\u路径))!!
}
@试验
fun`如果输入PostDTO,则应返回PostEntity`(){
val mapper=DTOtoEntityMapper()
//给定
val预期值=postEntityList
//什么时候
val实际值=mapper.map(postDTOList)
//然后
真实。资产(实际)。包含真实元素(预期)
}
}

对于JUnit5,我使用了JUnitPlatform和SelectClass(或SelectPackages):


您的测试注释是junit 5@test注释吗?它的类型是org.junit.jupiter.api.test吗?@DanielJacob所有的测试都是JUnit5测试,它是org.junit.jupiter.api.TestRunWith,而Suite是junit 4机制,不适用于junit 5。您链接的答案中没有任何地方建议您的方法。@johanneslink如何使用测试套件运行JUnit5测试?是的,我再次检查了答案,我的错误是我认为在JUnit平台上运行时不能使用它。不过,您应该能够使用Suite runner。是指使用JUnit5测试运行。你能回答如何在Kotlin中使用Junit5测试套件运行测试吗?@Thracian手工制作的测试套件在Junit5中不受支持。您可以通过使用RunWith(JUnitPlatform)来解决这个问题,但是接下来您将使用junit4来运行junit5。在构建工具和IDE不支持JUnit5的日子里,这个构造是作为一种变通方法创建的。您希望通过套件实现什么目标?
@RunWith(JUnitPlatform::class)
@SelectClasses(Some1Test::class, Some2Test::class)
class SuiteTest