2017-01-08 13 views
0

このユニットテストでは、Firebaseサーバにヒットしていません。ブレークポイントを使用して同じ単体テストを実行すると、サーバにヒットします。これはFirebaseがバックグラウンド作業に使用しているスレッドに関連している可能性があります。AndroidユニットテストからFirebase APIが呼び出されない

UIスレッドでコードを実行しようとしましたが、変更はありませんでした。また、Firebaseインスタンスを取得するときに計測コンテキストを使用しようとしました。

なぜこのコードはブレークポイントを使用する場合にのみ機能しますか?

@RunWith(AndroidJUnit4::class) 
class FirebaseTest : AndroidJUnitRunner() {  
    @Test 
    @Throws(Exception::class) 
    fun doTheTest() { 
     FirebaseDatabase.getInstance().reference.child("test").push() 
     assertTrue(true) 
    } 
} 

答えて

0

push()自体はサーバー上で何もしないので、私はあなたが実行されたすべてのコードの1行ということであった場合には、これまでの変化を見るとは思いません。 push()は現在の時間に基づいてキー値を生成し、そのキーを指すDatabaseReferenceを構築します。あなたはこのようなDatabaseReferenceに何か、書き込みまでは何も書かれていない:

val ref = FirebaseDatabase.getInstance().reference.child("test").push() 
ref.setValue(...) 

非同期あなたがプッシュ()によって生成されたキーでその場所に与える値を書き込みます、そしてあなたはそれがすることを期待することはできませんラウンドトリップを完了したことを確認するまでテストをブロックしない限り、テストの終了時にトランザクションを完了しました。

+0

あなたの答えは[この質問](http://stackoverflow.com/questions/41535740/difference-between-firebase-instance-and-databasereference)にも関連しています。あなたはそれに答えることができますか?私も好奇心が強いから。 :) – koceeng

関連する問題