gpt4 book ai didi

java - Kotlin + SpringBoot : DI lateinit property service has not been initialized

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:59 24 4
gpt4 key购买 nike

需要帮助解决错误:

kotlin.UninitializedPropertyAccessException: lateinit property ultraService has not been initialized

at com.example.ultrasonic.service.UltraServiceTest.get all Ultra(UltraServiceTest.kt:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

服务等级: https://github.com/swapab/ultrasonic/blob/master/src/main/kotlin/com/example/ultrasonic/service/UltraService.kt

package com.example.ultrasonic.service

import com.example.ultrasonic.domain.Ultra
import com.example.ultrasonic.repository.UltraRepository
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service

@Service
class UltraService {

@Autowired
private lateinit var UltraRepository: UltraRepository

fun publish(Ultra: Ultra): Ultra =
UltraRepository.save(Ultra)

fun all(): List<Ultra> =
UltraRepository.findAll()
}

服务类测试: https://github.com/swapab/ultrasonic/blob/master/src/test/kotlin/com/example/ultrasonic/service/UltraServiceTest.kt

package com.example.ultrasonic.service

import com.example.ultrasonic.domain.Ultra
import com.example.ultrasonic.repository.UltraRepository
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.junit.Before
import org.junit.Test
import org.mockito.Mock
import org.mockito.Mockito
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.test.context.ContextConfiguration
import java.time.LocalDate

@ContextConfiguration(classes = [UltraService::class])
class UltraServiceTest {

@Autowired
lateinit var ultraService: UltraService

@Mock
lateinit var UltraRepository: UltraRepository

lateinit var sampleUltra: Ultra

lateinit var sampleUltraJsonString: String

private val mapper = jacksonObjectMapper()

@Before
fun setUp() {
sampleUltra = Ultra(1,
"latest sample Ultra")

sampleUltraJsonString = mapper.writeValueAsString(sampleUltra)
}

@Test
fun `get all Ultra`() {

Mockito.doReturn(listOf(sampleUltra)).`when`(ultraService).all()

ultraService.all()

Mockito.verify(UltraRepository).findAll()
}
}

复制者在这里:https://github.com/swapab/ultrasonic

最佳答案

您是否尝试过注释您的测试类以使用 SpringRunner 单元测试工具?

@RunWith(SpringRunner.class)
class UltraServiceTest {

}

参见 http://www.baeldung.com/spring-boot-testing

关于java - Kotlin + SpringBoot : DI lateinit property service has not been initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50172596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com