在单元测试类中使用FirebaseAuth时出错

时间:2019-03-05 00:23:58

标签: firebase unit-testing junit firebase-authentication

尝试对使用Firebase身份验证的简单登录功能进行单元测试。尝试在测试类中初始化Firebase身份验证时收到ExceptionInInitializerError

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 :(得分:0)

您不想在单元测试期间调用Firebase的任何部分。根本无法在JVM中运行的单元测试环境中成功初始化Firebase SDK。如果您的测试模拟FirebaseAuth实例,并决定调用其方法时该怎么做,那就更好了。这将涉及让它创建通常会生成的其他对象模拟。重要的是将Firebase身份验证完全远离测试的代码路径,以免由于未初始化而不会产生任何错误。