热初始化 MongoRepository 以使用 Kotlin 在 Spring Boot 中加载随机数据
Hot to initialize MongoRepository to load random data in SprintBoot using Kotlin
我有一个简单的测试用例(因为我没有找到另一种方法)用一些随机数据加载我的数据库:
package com.springbootapirest.app
import com.springbootapirest.app.models.Dog
import com.springbootapirest.app.repositories.DogRepository
import org.jeasy.random.EasyRandom
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import java.util.stream.Collectors
internal class InitializationTest() {
@Autowired
private lateinit var dogRepository: DogRepository
@Test
fun initializeDatabase() {
val generator = EasyRandom()
val dogs: List<Dog> = generator.objects(Dog::class.java, 3)
.collect(Collectors.toList())
println(dogs);
dogs.forEach { dog ->
this.dogRepository.save(dog);
}
}
}
但是当我尝试使用 ./gradlew test --tests InitializationTest
执行时
错误片段是
kotlin.UninitializedPropertyAccessException: lateinit property dogRepository has not been initialized
而且我不知道如何初始化 MongoRepository 才能像 Spring Boot API 服务一样工作 运行。
欢迎任何其他简单的方法或帮助,谢谢。
最后很容易,因为在 class 的 header 中添加 @SpringBootTest
:
@SpringBootTest
internal class InitializationTest() {
@Autowired
private lateinit var dogRepository: DogRepository
@Test
fun initializeDatabase() {
val generator = EasyRandom()
val dogs: List<Dog> = generator.objects(Dog::class.java, 3)
.collect(Collectors.toList())
println(dogs);
dogs.forEach { dog ->
this.dogRepository.save(dog);
}
}
}
我有一个简单的测试用例(因为我没有找到另一种方法)用一些随机数据加载我的数据库:
package com.springbootapirest.app
import com.springbootapirest.app.models.Dog
import com.springbootapirest.app.repositories.DogRepository
import org.jeasy.random.EasyRandom
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import java.util.stream.Collectors
internal class InitializationTest() {
@Autowired
private lateinit var dogRepository: DogRepository
@Test
fun initializeDatabase() {
val generator = EasyRandom()
val dogs: List<Dog> = generator.objects(Dog::class.java, 3)
.collect(Collectors.toList())
println(dogs);
dogs.forEach { dog ->
this.dogRepository.save(dog);
}
}
}
但是当我尝试使用 ./gradlew test --tests InitializationTest
错误片段是
kotlin.UninitializedPropertyAccessException: lateinit property dogRepository has not been initialized
而且我不知道如何初始化 MongoRepository 才能像 Spring Boot API 服务一样工作 运行。
欢迎任何其他简单的方法或帮助,谢谢。
最后很容易,因为在 class 的 header 中添加 @SpringBootTest
:
@SpringBootTest
internal class InitializationTest() {
@Autowired
private lateinit var dogRepository: DogRepository
@Test
fun initializeDatabase() {
val generator = EasyRandom()
val dogs: List<Dog> = generator.objects(Dog::class.java, 3)
.collect(Collectors.toList())
println(dogs);
dogs.forEach { dog ->
this.dogRepository.save(dog);
}
}
}