Классы Mocking final (Kotlin) с Mockito работают нормально, и ваши настройки, очевидно, правильные (вы получите ошибку, если mocking, что Activity
не получилось).Что-то не так с тем, как вы пытаетесь проверить.
Mockito используется для макетирования зависимостей класса, который вы хотите проверить, а не класса, который вы хотите проверить сам.
То, что вы делаете там, - это издевательство над вашим LoginActivity
, а затем утверждение, что оно возвращает какое-то значение.Для методов, которые возвращают boolean
как isEmailValid(...)
, макет по умолчанию возвращает false
.Вы не проверяете издевательства, в этом нет никакого смысла.Вы хотите проверить «реальный» экземпляр тестируемого класса.
Если вы хотите проверить этот Activity
, вы просто создадите его с помощью val classToTest = LoginActivity()
, а затем выполните assert
.
Это может (не уверен) работать в этом очень простом случае, но, как правило, вы не проводите модульное тестирование Activity
с, потому что происходит слишком много специфичных для Android вещей, таких как раздувание макета (setContentView
), который не работает в модульном тесте.
Вот почему такие концепции, как MVP или MVVM, приобрели популярность, чтобы отодвинуть столько логики от Android-классов, как Activity
, а затем сделать ее тестируемой.
Для вашего случая, чтобы начать, вы можете написать EmailChecker
класс, который вы a.затем используйте в своей деятельности, чтобы проверить электронную почту String
и б.может лучше проверить с помощью модульного теста.