KotlinTest параллелизм с Mockk - PullRequest
       44

KotlinTest параллелизм с Mockk

1 голос
/ 10 января 2020

Итак, я использовал kotlintest в сочетании с mockk, но я столкнулся с проблемой при переключении из однопоточного режима в несколько, добавив его в класс ProjectConfig:

override fun parallelism(): Int = Runtime.getRuntime().availableProcessors()

Если я запускаю в одиночном режиме , Все мои тесты пройдены, но как только я переключаюсь на параллелизм, некоторые из них, которые используют mocks, начинают терпеть неудачу.

У меня есть все методы, такие как:

override fun afterTest(testCase: TestCase, result: TestResult) {
    clearAllMocks()
}

Так что я представляю методы, подобные этим, могут вызывать сбой моих имитаций, если очистить все фиктивные данные перед проверкой блока.

Есть ли способ принудительного выполнения тестов в разных потоках с использованием их собственных экземпляров Mockk и принудительного использования метода clearAllMocks () только для очистки имитаторов на вызывающей ветке? Если нет, какие другие методы кода могут помочь с этими проблемами?

1 Ответ

1 голос
/ 13 января 2020

Согласно эта проблема в репозитории mockk , связанная с другой средой тестирования, clearAllMocks не может выполняться параллельно.

В случае, если ваши тесты выполняются параллельно, вы не может использовать clearAllMocks

oleksiyp прокомментировал 15 мая 2019

Это, вероятно, связано с тем, что mockk хранит вещи в памяти, и clearAllMocks не может правильно (и, возможно, не должен) очень хорошо справляться с условиями гонки.

То, что вы можете сделать, это очистить каждый экземпляр в отдельности с помощью clearMocks:

override fun afterTest(testCase: TestCase, result: TestResult) {
    clearMocks(mockedInstance1, mockedInstance2, mockedInstance3)
}

И это должно работать при параллельной работе

...