Я пишу модульный тест для одного из Usecase
классов. Проект android содержит код Java и Kotlin. Вот соответствующий фрагмент зависимости Gradle
testImplementation 'org.robolectric:robolectric:3.7.1'
testImplementation 'org.mockito:mockito-core:1.9.5'
. Вариант использования аутентифицирует студента и возвращает действительные токены, вызывая экземпляр репозитория для сетевых операций. Что я делаю в тестовом классе Usecase
, так это то, что я высмеиваю данные, возвращаемые репозиторием, чтобы я мог самостоятельно протестировать Usecase
.
@RunWith(RobolectricTestRunner::class)
class StudentUsecaseTest {
private lateinit var usecase: IStudentUsecase
private lateinit var expectedResponse: TokenResponse
@Before
fun setUp() {
usecase = obtainInstance()
expectedResponse = TokenResponse(
"token123",
"12223335789" //expiry date
)
`when`<TokenResponse>(usecase.authenticate(
any(DeviceInfo::class.java), << error points here
"",
"",
""
)).thenReturn(expectedResponse)
}
@Test
@Throws(ResponseException::class)
fun authenticateAccountSuccessful() {
val deviceInfo = DeviceInfoDTO(
"Qwer1244d",
"Pixel",
details = ""
)
val networkesponse = usecase.authenticate(
deviceInfo,
"TestUser",
"TestPassword",
"APITest477P"
)
assertEquals("token123", networkesponse?.token, "Refresh token not matching")
}
}
Когда я запускаю тест, я получаю следующую ошибку
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter scope
DeviceInfo
определено не равным NULL, и я также передаю допустимый объект. Не уверен, что блокирует запуск теста.
Есть ли что-то, чего мне не хватает?