1

Robolectricでテストを実行しようとしていて、Firebaseと統合されています。私はプロジェクトMyProject - 私はデータベースの実際のインスタンスでテストを実行するために使用されるテストがあります。テスト - このプロセスでFirebaseAppが初期化されていません

問題がテスト前にクリーンアップを実行しているとき、私はエラーを持っている、ということである:

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first. 

at com.google.firebase.FirebaseApp.getInstance(Unknown Source) 
at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source) 
at com.cgbros.silkhub.activity.listener.LoginActivityUnitTest.cleanUp(LoginActivityUnitTest.kt:26) <28 internal calls> 

テストファイル: https://gist.github.com/augustoerico/e88d3e5b59ae5d023d83c114b8ffa708 (私はコピー&ペーストするには、ここのソースを試してみました無残に失敗しました...。 )

どのように私はこの仕事をすることができますか?

ありがとうございました!

+0

私は最後に(今朝早く)このアプリケーションの 'build.gradle'の最後に' apply plugin: 'com.google.gms.google-services''を追加するのを忘れてしまいました。また、このエラーに関する以前の質問の一部を見てください:https://stackoverflow.com/search?q=Default+FirebaseApp+is+not+initialized+in+this+process+null –

答えて

0

わかりました。実際には概念的な問題です。問題は、Firebase Android SDKを使用してAndroidコンテキスト外でテストを実行しようとしていることです。つまり、私のテストはAndroidアプリケーションではなく、Android SDKを使用しようとしています。すべてFirebaseApp.initializeApp()は、パラメータとしてContextを必要とします。

私はFirebaseDatabaseとやりとりする方法を見つける必要があります。私は一緒に行くことにしましたしました

**更新**

https://github.com/bane73/firebase4j

は(私を助けるために時間を割いていただき、ありがとうございます。私はfirebase-adminで行くか、あるいはこのいずれかを使用することができ、私だと思います今後の参考のためFirebaseのREST API https://firebase.google.com/docs/reference/rest/database/

は、私はルールを微調整することにより、公共の完全なアクセス権を与えているので、テストのセットアップとクリーンアップを記述する方が簡単です。私も上記のISSUに直面した

1

私は同じ問題を数日前にも持っていました。エラーと同じ方法で解決しました。 Firebaseのインスタンスを初期化せずに取得しようとしているため、このエラーが発生します。あなたはこのようFirebaseのインスタンスを取得しようとする前に、このコード行を追加してください:

FirebaseApp.initializeApp(this); 

をまた、フランクが言うように、あなたはbuild.gradleファイルで追加したコードの次の行を持っていることを確認してください、あなたのas the last lineをファイル全体。

apply plugin: 'com.google.gms.google-services' 
+0

ありがとうございました。私が直面している問題は、テストクラスでFirebaseを初期化したいので、それを実装してクリーンアップできるということです。ですから、「this」はContextのインスタンスではないため、単に使用することはできません。 – Kiko

+0

これが起こっている理由です。 ContextのインスタンスなしでFirebaseをインスタントメッセージにすることはできません。この場合、Contextの引数を使用してTestClassにメソッドを作成します。その後、そのメソッドをActivityClassから呼び出すと、Contextのインスタンスが引数として使用されます。確かに働くでしょう。 –

+0

時間を割いてくれてありがとう(私はちょうど間違った方法でFirebase SDKを使用しようとしていたと思うが、REST APIを使ってデータベースにデータを入れてクリーンアップする必要があると思う) – Kiko

0

e。すべてのプラグインのダウンロードとナゲットによるチェックを行います。しかし、結局のところ、アプリケーションパッケージ名がGoogle Devに割り当てられているものと一致しないことが原因でクラッシュが発生していることがわかりました。 アプリケーションパッケージ名は、Google Devに割り当てられたものでなければなりません。コンソール

関連する問題