0

私は簡単なテストケースアンドロイドrobolectricテストマニフェストのマージ問題(アンドロイドビーコンライブラリ)

@Config(constants = BuildConfig.class) 
@RunWith(RobolectricGradleTestRunner.class) 
public class BaseTest { 

    @Test 
    public void startEverTestSugarAppAsFirst() { 
     BeaconManager.setsManifestCheckingDisabled(true); 
    } 

} 

は残念ながらランナーがmanifestmerger問題

java.lang.RuntimeExceptionのヒットがあります org.altbeaconを。 beacon.BeaconManager $ ServiceNotDeclaredException: BeaconServiceがAndroidManifest.xmlで正しく宣言されていません。 は、Eclipseを使用している場合、=真

org.robolectric.RobolectricTestRunner $ 2.evaluate(RobolectricTestRunner.java:256)で org.robolectric.RobolectricTestRunner.runChildであなたのproject.propertiesが がmanifestmerger.enabledたことを確認してください(RobolectricTestRunner.java:193) でorg.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:56) org.junit.runnersでorg.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)で.ParentRunner $ 1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access org.robolectric.RobolectricTestRunner $ 1.evaluate(RobolectricTestRunnerで org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)で$ 000(ParentRunner.java:58)。 Javaの: com.intellij.junit4.JUnit4IdeaTestRunnerで org.junit.runner.JUnitCore.run(JUnitCore.java:137)でorg.junit.runners.ParentRunner.run(ParentRunner.java:363)で159) 。 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarterでstartRunnerWithArgs(JUnit4IdeaTestRunner.java:69) でcom.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) 。 java:74) at sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でjava.lang.reflect.Method.invokeでsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) (Method.java:497 )によって引き起こさ com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) で: org.altbeacon.beacon.BeaconManager $ ServiceNotDeclaredException: BeaconServiceが正しくのAndroidManifest.xmlに宣言されていません。 は、Eclipseを使用している場合、 は org.altbeacon.beacon.BeaconManager.verifyServiceDeclaration(BeaconManager.java:786)org.altbeacon.beacon.BeaconManagerで で=真manifestmerger.enabledたあなたのproject.propertiesことを確認してください。(BeaconManager。 Javaの:252) com.lucyapp.client.Client.onCreate(Client.java:67)で org.altbeacon.beacon.BeaconManager.getInstanceForApplication(BeaconManager.java:244) で org.robolectric.internal.ParallelUniverseで org.robolectric.RobolectricTestRunで.setUpApplicationState org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:421)で(ParallelUniverse.java:164) NERの$の2.evaluate(RobolectricTestRunner.java:252)より ... 18

周りのいずれかの簡単な仕事があるのだろうか。私はアンドロイドビーコンライブラリテストフォルダを通過してきたと

BeaconManager.setsManifestCheckingDisabled(true); 

+0

あなたはその行をどこに置いていますか?それがまさに私がこの問題を回避するために行うことです。 – davidgyoung

+0

テストの最初の行(ライブラリテストパッケージと同じ)。それは私の質問の上にある。 – speedingdeer

+0

githubの新しい問題で提出されるべきバグかもしれないと思いますか? – speedingdeer

答えて

0

はどういうわけかBeaconManagerはトリックがそれをどこに置くかを把握することですBeaconManager.setsManifestCheckingDisabled(true);前にコールを構築されて助けにはなりませんそれで最初に実行されます。

スタックトレースを見ると、私はBeaconManagerがライン67にcom.lucyapp.client.Client.onCreateから構築されることを参照してください。あなたはそれが呼び出されるようBeaconManager.setsManifestCheckingDisabled(true);ラインを置くことができる場所、おそらくあなたが把握することができ、ことを知って

... 
org.altbeacon.beacon.BeaconManager.getInstanceForApplication(BeaconManager.java:244) at 
com.lucyapp.client.Client.onCreate(Client.java:67) 
... 

前にcom.lucyapp.client.Client.onCreate(Client.java:67)

+0

私は同じと思っています。クライアントはアンドロイドアプリケーションです。私のコードをリファクタリングして動作させる必要があるようです。コードでマニフェストチェックを無効にすると(ただテストするため)、RangeNotifierに別のエラーが発生します。私に何か新しいことがあれば、ここに戻ってきます。 – speedingdeer

関連する問題