测试暂停功能 - 没有找到测试(有时)

Testing suspending function - no tests were found (sometimes)

我在尝试测试我的挂起 Spring Kotlin @Controller 函数时无法理解一个奇怪的行为:

@Controller
class PersonRSocketController(val personRepository: PersonRepository) {
    private val sharedFlow = flow<Person> {
        for (i in 1..1000) {
               emit(Person(i.toLong(), firstName = "$i - firstName", lastName = "$i - lastName"))
        }
    }.buffer(100).shareIn(GlobalScope, SharingStarted.WhileSubscribed(replayExpirationMillis = 0),replay = 0)

    @MessageMapping("currentpersons")
    suspend fun currentPersons(): Flow<Person?> {
        return sharedFlow
    }

} 

测试:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class RsocketServerAppTests @Autowired constructor(
    val rSocketRequesterBuilder: RSocketRequester.Builder,
    @LocalServerPort val serverPort: Int
) {
    @Test
    fun testRSocket() = runBlocking{
        val requestSpec =
            rSocketRequesterBuilder.websocket(URI.create("ws://localhost:$serverPort/rsocket")).route("currentpersons")
        var result = requestSpec.retrieveFlow<PersonDataRequest>()
        assertThat(result.first().firstName).isEqualTo("1 - firstName")
//      for (i in 1..2) {
//
//      }
    }

}

当我 运行 测试时,测试不是 运行 - Maven 报告没有找到测试。 当我取消注释 for 循环时,测试将 运行 并通过。当我用 println("") 替换 for 循环时,测试也会 运行 并通过。当我用 assertThat(1).isEqualTo(1) 替换它时,测试不会 运行。 有人可以解释一下吗?

只要 return 类型不是 void,JUnit 就不会发现该测试。 参见 。我认为这对于我遇到的问题来说是非常不幸的。