запись модульных тестов в kotlin с использованием junit5 AND mockk - PullRequest
0 голосов
/ 25 мая 2020

Я новичок в kotlin, junit5 и mockk. Я пишу модульные тесты для функции, которая принадлежит объекту-компаньону класса. как писать для этого модульные тесты.

class CommonUtility {

    companion object {
        @Throws(SecurityException::class)
        fun initializeFilePath(filePath: String) {
            val directory = File(filePath)
            if (!directory.exists()) {
                try {
                    directory.mkdir()
                } catch (ex: SecurityException) {
                    throw SecurityException("$filePath was not created in system", ex)
                }
                log.info("Created the directory $filePath")
            }
        }
     }
}

может ли кто-нибудь дать мне один пример модульного теста, который может быть написан для этой функции.

1 Ответ

1 голос
/ 25 мая 2020

Что вы должны здесь протестировать?

  • Создание каталога с заданным путем к файлу.
  • Убедитесь, что ничего не произошло, когда каталог уже существует.
  • Убедитесь, что исключение безопасности было выбрано в нужном месте и содержало осмысленное сообщение.

Пример теста (первый пункт):

@Test
fun `should create directory with given file path`() {
    CommonUtility.initializeFilePath("file")

    val createdFile = File("file")
    assertTrue(createdFile.exists())

    createdFile.delete() // you have to remove directory after test
}

Я бы порекомендовал изменить имя метода, для например на createDirectoryWithGiven, текущее имя не имеет смысла. Также рекомендуется возвращать то, что вы создали в этом методе, тогда ваш метод будет легче протестировать.

...