使用FirebaseAuth对活动进行仪器单元测试

时间:2017-03-23 13:57:13

标签: android unit-testing firebase firebase-authentication

我尝试使用Activity设置FirebaseAuth的单元测试。当我运行应用程序时,一切正常。问题在于仪器单元测试的设置。

活动:

public final class GoogleSignInActivity extends AppCompatActivity{
  @Override
    protected void onCreate(final Bundle savedInstanceState) {
       ...
       if (FirebaseApp.getApps(this).isEmpty()) {
        FirebaseApp.initializeApp(this);
       }

       mFirebaseAuth = FirebaseAuth.getInstance();
  }
}

测试

@RunWith(AndroidJUnit4.class)
public class GoogleSignInActivityIntegrationTest extends UiTestPrerequesites {

@Rule
public final ActivityTestRule<GoogleSignInActivity> mActivityRule = new ActivityTestRule<>(
        GoogleSignInActivity.class, false, true);

@Before
public void setup(){
    if (FirebaseApp.getApps(InstrumentationRegistry.getContext()).isEmpty()) {
        FirebaseApp.initializeApp(InstrumentationRegistry.getContext());
    }
}   

@Test
@SmallTest
public void implements_GoogleSignInWorkerFragment_GoogleSignInUiChangesListener() {
    //FirebaseApp.initializeApp(InstrumentationRegistry.getContext()); (this doesn't help)
    assertThat(mActivityRule .getActivity(),
                notNullValue());
}

}

异常(仅在运行测试时,而非app):

Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.twofortyfouram.ui.test. Make sure to call FirebaseApp.initializeApp(Context) first.

1 个答案:

答案 0 :(得分:1)

我认为你的appID问题(a.k.a包名)。您还应该将您的应用程序ID添加到Firebase项目帐户中进行测试。

它有后缀:测试

一般来说,它看起来像:

  

[的applicationID]。测试

  

com.apipas.android.hello.test

发布applicationId是

  

com.apipas.android.hello

我希望这对你有帮助,'。