2016-07-22 10 views
0

FirebaseとRealtimeDBを利用するJavaアプリケーションを作成しています。JUnitのFirebaseを模擬して

私のユニットテストを書いている間FirebaseクラスはJUnitの内側にロードすることができないという点で、私はNoSuchMethodErrorを投げ、かなり奇妙な問題に遭遇した: java.lang.NoSuchMethodError: com.google.common.primitives.UnsignedInteger.asUnsigned(I)Lcom/google/common/primitives/UnsignedInteger;

私が使用してFirebaseにそれを追跡するために管理してきましたプロジェクトの残りの部分とは違うGuavaのバージョンですが、私はGuava 19.0(Mavenの依存関係の除外メカニズムによる)を強制していますが、FirebaseOptionsクラスがロードされているときにも同じエラーが表示されます正確な位置:com.google.firebase.FirebaseOptions$Builder.setServiceAccount(FirebaseOptions.java:77))。

EDIT: 問題は実行時にテスト実行中に表示され、Guavaライブラリが正しく読み込まれます。

FirebaseにGuavaライブラリを適切に提供する方法についてのアイデアはありますか?

+0

旧バージョンのGuava – Hrabosch

+0

@Hraboschのように見えるので、あなたの依存関係を追加します。Firebase POMに明示的に追加されているGuavaを追加して、Mavenに過渡的に解決させるようにしました。パージ後にローカルのMavenキャッシュに再び現れます)、無駄になります。 –

答えて

2

どうやら、この溶液を、次いで、ローカルレポジトリのパージを強制(

<dependency> 
    <groupId>com.google.firebase</groupId> 
    <artifactId>firebase-server-sdk</artifactId> 
    <version>[3.0.0,)</version> 
    <exclusions> 
     <exclusion> 
      <groupId>guava</groupId> 
      <artifactId>guava</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

は、以下のように、最終的な依存関係を作る)POMの解像度の除外を追加することでした。プロジェクトのインデックスを再作成した後、問題なく適切なクラスを読み込むことができました。