Ошибка использования FirebaseAuth в классе модульного тестирования - PullRequest
0 голосов
/ 05 марта 2019

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

import com.google.firebase.auth.FirebaseAuth;
@RunWith(MockitoJUnitRunner.class)
public class LoginTest {

@Mock
private LoginView view;

@Mock
private FirebaseAuth firebaseAuth;

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);
    view = mock(LogIn.class);
    firebaseAuth = FirebaseAuth.getInstance(); // Error
}

Сообщение об ошибке:

java.lang.ExceptionInInitializerError
at com.google.firebase.FirebaseApp.<clinit>(SourceFile:131)
at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source)
Caused by: java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked.

1 Ответ

0 голосов
/ 05 марта 2019

Вы не хотите вызывать какую-либо часть Firebase во время модульного тестирования.Firebase SDK просто не может быть успешно инициализирован в среде модульного тестирования, работающей в JVM.Было бы намного лучше, если бы ваш тест выполнял макет экземпляра FirebaseAuth и решал, что делать при вызове его методов.Это будет включать в себя создание других макетов объекта, которые он обычно генерирует.Важно полностью исключить проверку подлинности Firebase из пути кода вашего теста, чтобы она не вызывала ошибок из-за неинициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...