Использовать другой путь к файлу для тестирования в Spring Boot - PullRequest
0 голосов
/ 18 октября 2019

В моем проекте есть класс, содержащий метод извлечения файлов (в виде списка). Чтобы написать модульные тесты и иметь возможность поместить все в инструмент управления версиями, я хочу поместить небольшой пример каталога в мой проект. Однако, когда я это делаю, мой метод должен уметь различать, должен ли он считываться из реального (внешнего проекта) пути или среды тестирования.

Это мой метод:

fun getDirectoryContentObject(baseUserDir: String): UserLicenses {
    val dirExists = Files.exists(Paths.get(licenseLocation + baseUserDir))

    if(!dirExists) {
        return UserLicenses(baseUserDir, listOf())
    }

    val userLicenses = UserLicenses(baseUserDir, listOf())

    Files.walk(Paths.get(licenseLocation + baseUserDir)).forEach { outerIt ->
        val dirOrFileName = outerIt.fileName.toString()

        if (dirOrFileName != baseUserDir && !dirOrFileName.endsWith(licenseFileExtension)) {
            val fileList: MutableList<String> = mutableListOf()

            Files.walk(Paths.get(outerIt.toString())).forEach { innerIt ->
                val subDirOrFileName = innerIt.fileName.toString()

                if (subDirOrFileName.endsWith(licenseFileExtension)) {
                    fileList += subDirOrFileName
                }
            }

            userLicenses.licenseVersions += LicenseVersions(dirOrFileName, fileList)
        }
    }

    return userLicenses
}

Значение licenseLocation устанавливается @Value из application.yml и указывает на файлы за пределами проекта.

Как я могу сказать методу, чтобы получить файлы изнутри проекта, если онвыполняется модульным тестом?

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать весенний ресурс API для получения экземпляра файла.

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/ResourceUtils.html

Внешний пример:

filepath: file:/some-os-path/some-file-somewhere.abc

ResourceUtils.getFile(filepath);

Тестовый пример:

filepath: classpath:file-from-resources-folder.abc

ResourceUtils.getFile(filepath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...