使用Roboelectric的Firebase Auth测试始终失败

时间:2018-03-19 08:15:08

标签: android firebase firebase-authentication robolectric

运行此测试时,我得到空指针异常。我用按钮检查一切是否正常。所以roboelectric或firebase都存在问题。我不知道为什么会这样。

当我手工完成时,一切正常。用户已创建且活动已更改。

编辑:使用espresso的UI测试工作正常。

 @RunWith(RobolectricTestRunner::class)
 @Config(constants = BuildConfig::class)


class RegisterUserTest {
    @Test
    fun shouldRegisterUser() {
        val activity = Robolectric.setupActivity(RegistrationActivity::class.java)

        val emailText = activity.findViewById<EditText>(R.id.text_email)
                .setText("example@example.com")
        val passwordText = activity.findViewById<EditText>(R.id.text_password)
                .setText("password123")
        val confirmPasswordText = activity.findViewById<EditText>(R.id.text_confirm_password)
                .setText("password123")

        val signupButton = activity.findViewById<Button>(R.id.button_register)

        assertNotNull(signupButton)
        assert(signupButton.isEnabled)
        signupButton.performClick()


        assertNotNull(activity.firebaseAuth.currentUser)

        val actualIntent = shadowOf(RuntimeEnvironment.application).nextStartedActivity
        val expectedIntent = Intent(activity, LoginActivity::class.java)
        assertEquals(expectedIntent.component, actualIntent.component)

    }
}

在我的acitvity onCreate方法中,我已经分配了一个监听器。

btnRegister.setOnClickListener{
                registerUser(textEmail.text.toString(), textPassword.text.toString())
                val intent = Intent(this@RegistrationActivity, LoginActivity::class.java)
                startActivity(intent)

        }

这是使用Firebase Auth的注册方法。

fun registerUser(email: String, password: String) {
        this.firebaseAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener { task: Task<AuthResult> ->
                    if (task.isSuccessful) {
                        Log.d(TAG, "createUserWithEmail:success")
                    } else {
                        Log.w(TAG, "createUserWithEmail:failure")
                    }
                }
    }

错误堆栈跟踪:

java.lang.NullPointerException
    at com.google.android.gms.internal.zzdvv.zzb(Unknown Source)
    at com.google.android.gms.internal.zzdwc.zza(Unknown Source)
    at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source)
    at com.example.daza.meter.RegistrationActivity.registerUser(RegistrationActivity.kt:154)
    at com.example.daza.meter.RegistrationActivity$onCreate$1.onClick(RegistrationActivity.kt:62)
    at android.view.View.performClick(View.java:6256)
    at com.example.daza.meter.RegisterUserTest.shouldRegisterUser(RegisterUserTest.kt:41)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:568)
    at org.robolectric.internal.SandboxTestRunner$2.evaluate(SandboxTestRunner.java:253)
    at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:130)
    at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:42)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.robolectric.internal.SandboxTestRunner$1.evaluate(SandboxTestRunner.java:84)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

0 个答案:

没有答案
相关问题