Tag: robolectric

Roboelectric给了我一个java.lang.IllegalArgumentException:需要INTERNET权限

我正在将UnitTests改造为现有的应用程序。 当我运行这个简单的unit testing时 import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; import static junit.framework.Assert.assertTrue; @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, packageName = “com.blah.blah” ) public class TestThis { @Test public void blah(){ assertTrue(true); } } 我收到这个错误 java.lang.IllegalArgumentException: INTERNET permission is required. at com.segment.analytics.Analytics$Builder.(Analytics.java:585) at com.segment.analytics.Analytics.with(Analytics.java:115) at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:140) at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:433) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:240) at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:188) at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:54) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) […]

关于create activity的Robolectric 3.0 java.lang.NoSuchMethodException

我很高兴听到android工作室已经做了一些更新,以便在android studio中简单地进行unit testing,所以我一直试图设置roboelectric但是我无法通过以下方法中出现的这个错误。 MainActivity = Robolectric.buildActivity(MainActivity.class).create().get(); 使用以下堆栈跟踪 引起:java.lang.RuntimeException:java.lang.NoSuchMethodException:java.lang.Object.attach(android.content.Context,android.app.ActivityThread,android.app.Instrumentation,android.os.IBinder,int,android .app.Application,android.content.Intent,android.content.pm.ActivityInfo,java.lang.CharSequence,android.app.Activity,java.lang.String,android.app.Activity $ NonConfigurationInstances,android.content.res .configuration)org.robolectric.util.ReflectionHelpers.traverseClassHierarchy(ReflectionHelpers.java:248)org.robolectric.util.ReflectionHelpers.callInstanceMethod(ReflectionHelpers.java:138)… 36更多信息 为什么会发生这种情况以及我能做些什么才能超越它?

无法使用robolectric捕获HTTP请求

我试图用Robolectric捕获一个http请求方法tokenize方法向服务器发送一个请求,我只想测试发送的post:如果我尝试 //Cardtest.java Robolectric.setDefaultHttpResponse(200, “dummy”); card.tokenize(paymentHandler); Robolectric.getSentHttpRequest(0); 我有一个空数组错误 但我知道请求已发送,因为如果我删除第一行,则会出现以下错误: Unexpected HTTP call POST 如果我把log语句看起来似乎永远不会为http请求调用我的成功块。 如何确保调用我的HTTP请求成功回调。 (我已经尝试过Robolectric.runUiThreadTasksIncludingDelayedTasks();) 谢谢

被测试的类中的模拟类

我怎么能和Mockito一起模拟我class上正在测试的其他课程? 例如: MyClass.java class MyClass { public boolean performAnything() { AnythingPerformerClass clazz = new AnythingPerformerClass(); return clazz.doSomething(); } } AnythingPerformerClass.java class AnythingPerformerClass { public boolean doSomething() { //very very complex logic return result; } } 并测试: @Test public void testPerformAnything() throws Exception { MyClass clazz = new MyClass(); Assert.assertTrue(clazz.performAnything()); } 我可以欺骗AnythingPerformerClass从AnythingPerformerClass排除不必要的逻辑吗? 我可以覆盖doSomething()方法以简单返回true或false吗? 为什么我指定Mockito,因为我需要使用Robolectric进行Android测试。