0

我有简单的测试用例

@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,请验证您的 project.properties 是否具有 manifestmerger.enabled=true

JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java: 74) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect .Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 原因:org.altbeacon.beacon.BeaconManager$ServiceNotDeclaredException:BeaconService 不正确在 AndroidManifest.xml 中声明。如果使用 Eclipse,请验证您的项目。

我想知道是否有任何简单的解决方法。我一直在浏览 android 信标库测试文件夹和

BeaconManager.setsManifestCheckingDisabled(true);

没有帮助

4

1 回答 1

0

在调用之前以某种BeaconManager方式构建 诀窍是找出该行的放置位置,以便它首先执行。BeaconManager.setsManifestCheckingDisabled(true);

查看堆栈跟踪,我看到BeaconManagerget 从com.lucyapp.client.Client.onCreate第 67 行构造:

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

知道了这一点,也许你可以弄清楚你可以把这BeaconManager.setsManifestCheckingDisabled(true);条线放在哪里,这样它就会在之前被调用com.lucyapp.client.Client.onCreate(Client.java:67)

于 2016-05-18T21:56:20.540 回答