Выполнить все тесты класса сопрограммы не удалось - PullRequest
0 голосов
/ 07 июля 2019

Я тестировал свой класс докладчика и все тестовые работы. Но когда я попытался запустить свой тестовый класс, все сопрограммы не прошли тест.

Я пытаюсь сбросить свою отправку и очистить прицел.

приватный диспетчер val = TestCoroutineDispatcher ()

private val testScope = TestCoroutineScope(dispatcher)

@Before
fun setUp() {
    Dispatchers.setMain(dispatcher)
    products = ProductsMotherObject.createEmptyModel()
    getProductsUseCase = GetProductsUseCase(productsRepository)
    updateProductsUseCase = UpdateProductsUseCase(productsRepository)
    presenter = HomePresenter(view, getProductsUseCase, updateProductsUseCase, products)
}

@After
fun after() {
    Dispatchers.resetMain()
    testScope.cleanupTestCoroutines()
}

и это пример моих тестов

@Test
fun `should configure recyclerview if response is success`() = testScope.runBlockingTest {
    //Given
    `when`(productsRepository.getProductsFromApi()).thenReturn(mutableMapOf())

    //when
    presenter.fetchProducts()

    //then
    verify(view).hideLoading()
    verify(view).setUpRecyclerView(products.values.toMutableList())
} 

У меня только одиночные ошибки в моих тестах, но каждый тест работает при одиночном запуске

1 Ответ

0 голосов
/ 07 июля 2019

решаемая. Я нашел этот невероятный пост .

Что я сделал:

Я реализовал мой диспетчер без конструктора.

    private val testDispatcher = TestCoroutineDispatcher()

Вы должны установить функцию @Before

@Before
fun setUp() {
    Dispatchers.setMain(testDispatcher)
}

И сброс после теста.

@After
fun after() {
    Dispatchers.resetMain()
    testDispatcher.cleanupTestCoroutines()
}

Наконец, каждый тест, который реализует сопрограммы, должен запускаться на MainScope.

@Test
fun `should configure recyclerview if response is success`() = testDispatcher.runBlockingTest {
    MainScope().launch {
        //Given
        `when`(productsRepository.getProductsFromApi()).thenReturn(mutableMapOf())

        //when
        presenter.fetchProducts()

        //then
        verify(view).hideLoading()
        verify(view).setUpRecyclerView(products.values.toMutableList())
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...