Стереть внутренний статус объекта в тесте

Наличие объекта

object MyObject { lateinit var first: String lateinit var second: String fun setVariables(first: String, second: String) { this.first = first this.second = second } } 

и потребительский класс:

 class Consumer(private val status: MyObject) { fun getString(): String { checkStatusInizialization() return "$first $second" } private fun checkStatusInizialization() { try { status.first status.second } catch (e: UninitializedPropertyAccessException) { throw MissingInitializationException() } } } 

и класс тестирования, например:

 class ConsumerTest { @Test(expected = MissingInitializationException::class) fun `MissingInitializationException when MyObject not initialized`() { Consumer(EventsConfigurationsStatus).getString() } @Test fun `get string`() { MyObject.setVariables("hello", "world!") Consumer(EventsConfigurationsStatus).getString() } } 

Тестирование проходит индивидуально, но выполняется их совместное MissingInitializationException when MyObject not initialized потому что у MyObject есть допустимое состояние (установлено в get string test).

Как я могу получить объект с пустым состоянием в начале каждого теста?

Ну, вот о чем идет речь – они созданы один раз, а затем сохраняют свое состояние до тех пор, пока приложение не будет убито.

Я бы повернул проблему по-другому. Вместо этого вы можете превратить MyObject в class и создать новый экземпляр этого метода в каждом методе тестирования – таким образом вы будете уверены, что MyObject (лучше переименовать его для большей ясности) имеет новое состояние всякий раз (и какой бы ни был) метод тестирования запускается.

В производственном коде вы можете превратить экземпляр MyObject в эффективный синглтон, сохранив его в companion object / object – в зависимости от того, что вам подходит.

  • Kotlin + JUnit + postgres для тестирования интеграции: утечка соединений
  • Как запустить тесты kotlintest с помощью gradle?
  • Какое надлежащее обходное решение для @BeforeAll в Котлине
  • Почему Mockito не может высмеивать общий тип параметра с типом номера в Kotlin?
  • Kotlin: unit test assert object после gson
  • Неразрешенная ссылка: junit
  • Как издеваться над классом Kotlin (final) с помощью PowerMock?
  • «Пустой набор тестов» в чистом модуле kotlin. (Спок / Android)
  • Избавление от lateinit при конвертации Spring Java8 Junit test в Kotlin
  • Тест JUnit в Котлине
  • освобождение переменной в котлин
  • Давайте будем гением компьютера.