Нужна помощь в устранении ошибки:
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