Как проверить свойство файла конфигурации ? — Котлин Весенняя загрузка Junit5

#spring-boot #kotlin #junit #properties

Вопрос:

Я хотел бы создать новый тест с файлом свойств, однако при запуске переменные всегда имеют значение null (конечно, только при тестировании).

Есть проблема с аннотацией kotlin / Spring boot ?

Это мой код.

приложение-тест.yml :

 export:
  path: /tmp/
  filename: reports.csv
 

Тестовый файл :

 @ContextConfiguration(initializers = [ConfigDataApplicationContextInitializer::class])
@EnableConfigurationProperties(value = [Config::class])
@ActiveProfiles("test")
internal class ControllerTest {

companion object {
    @MockBean
    var repository1: Repository1 = Mockito.mock(Repository1::class.java)

    @MockBean
    var repository2: Repository2 = Mockito.mock(Repository2::class.java)

    var service: Service = Service(repository1, repository2)
}

// Some mocked object for repo


 @Test
fun `export reports successfully`() {
    val file = service.exportDatabase()

    Assertions.assertEquals(
        null,
        file
    )
}
 

Моя служба:

 @Service
class IcaoService(
    private val repository1: Repository1,
    private val repository2: Repository2
) {

@Resource
private val config: Config = Config()

    fun exportDatabase(): File {
        val csvFile = File(config.path, config.filename)
        csvFile.createNewFile()

        val headers = listOf("id", "documentId", "mrz", "startDate", "duration", "datagroups", "error")
        val reports = repository2.findAll()
        csvWriter().open(csvFile, append = false) {
            writeRow(headers)
            reports.forEachIndexed { index, report ->
                writeRow(index, report.documentId, report.mrz, report.startDate, report.duration, report.datagroups, report.error)
            }
        }

        return csvFile
    }
}
 

Комментарии:

1. Я не уверен, что суффиксы профиля используются с yaml.

2. @BoristheSpider Я использовал пару проектов с YAML, и я могу подтвердить, что суффиксы профиля действительно работают с ним. Однако в них использовались простые @Value аннотации; Я не знаком с Config тем, как устроен здешний класс, поэтому не могу это прокомментировать.