Код: Выделить всё
@OptIn(ExperimentalCoroutinesApi::class)
@ExtendWith(MainCoroutineExtension::class)
class DetailViewModelTest {
private lateinit var viewModel: DetailViewModel
private lateinit var getForecastUseCase: GetForecastUseCase
private lateinit var savedStateHandle: SavedStateHandle
@BeforeEach
fun setUp() {
getForecastUseCase = mockk(relaxed = true)
savedStateHandle = SavedStateHandle()
viewModel = DetailViewModel(getForecastUseCase, savedStateHandle)
}
@Test
fun `given viewModel when initialized then forecastState should be Loading`() = runTest {
assertThat(viewModel.forecastState.value).isEqualTo(ForecastState.Loading)
}
@Test
fun `given savedStateHandle with null values when fetching forecast then state should remain Loading`() =
runTest {
savedStateHandle[DetailViewModel.LATITUDE_ARG] = null
savedStateHandle[DetailViewModel.LONGITUDE_ARG] = null
every { getForecastUseCase.execute(any(), any()) } returns flowOf(dummyForecast)
viewModel.forecastState.test {
val firstItem = awaitItem()
assertThat(firstItem).isEqualTo(ForecastState.Loading)
expectNoEvents()
}
}
}
< /code>
(на Ci)
Здесь, первый тест всегда достигает успеха, но второй (который содержит сделки) >
Java.lang.nullPointerException: не может вызвать
"com.sevban.data.repository.weatherforecastrepository.getLocationWeath ... < /p>
< /blockquote>
Как вы можете видеть, что он жаловался на это. Измешивание класса GetForeCastUseCase Что я пробовал? />
Я запускал повторяющиеся тесты тысячи раз, чтобы увидеть, являются ли они Flakky Tests или нет, но они никогда не провалились в моей локальной машине. < /p>
< / li>
Также я много раз чирил свой кэш Studio Android Android /> < /ul>
Есть ли какие -либо предложения, которые можно попробовать или это должно быть связано с проблемой о Bitrise? Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-in-local
Мобильная версия