Articles of robolectric

为什么Robolectric第一次testing运行时间太长?

我正在用Robolectrictesting我的Android应用程序,但是我遇到了一个奇怪的情况。 发生什么事情是,当我运行一些testing时,第一次testing比Robolectrictesting要花费更多的时间。 从testing本身来看,这并不是特定的,因为我在testing的顺序上尝试了不同的configuration,结果是第一个testing总是最慢的。 这是Robolectric的安装时间还是类似的? 提供的任何信息都很有用。 例如:

如何在Robolectric中对RecyclerView,LinearLayoutManager进行unit testing?

如何在Robolectric中对RecyclerView,ScrollListener,LinearLayoutManager进行unit testing? 对于这种testing,我相当新,但我真的很想模仿手势,特别是滚动。

Android – Jacoco代码覆盖忽略了Robolectrictesting

试图在使用Jacoco的Android Robolectrictesting中获得代码覆盖率,但是在创build报告时,它拒绝承认我的Robolectrictesting。 我的jacoco.gradle文件如下: apply plugin: 'jacoco' jacoco { toolVersion = "0.7.6.201602180812" } project.afterEvaluate { android.applicationVariants.all { variant -> def name = variant.name def testTaskName = "test${name.capitalize()}UnitTest" tasks.create(name: "${testTaskName}Coverage", type: JacocoReport, dependsOn: "$testTaskName") { group = "Reporting" description = "Generate Jacoco coverage reports for the ${name.capitalize()} build." classDirectories = fileTree( dir: "${project.buildDir}/intermediates/classes/${name}", excludes: ['**/R.class', '**/R$*.class', '**/*$ViewInjector*.*', […]

Robolectric中的片段自定义布局通胀不起作用

当使用LayoutInflater对片段中的布局进行膨胀时,出现以下exception: ./res/layout/locations_list.xml line #-1 (sorry, not yet implemented): Error inflating class com.costum.android.widget.LoadMoreListView 我想到,这是在充气自定义布局时发生的 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.locations_list, container, false); } 编辑这是locations_list.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" > <com.costum.android.widget.LoadMoreListView android:id="@+id/android:list" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="0dp" /> </LinearLayout> 任何其他布局的充气机的作品,如在这个testing: @Test public void testInflator() { ActivityController<SherlockFragmentActivity> activityController = […]

'./gradlew -Dtest.single = SimpleTest test'运行我所有的testing

我的项目是在Android Studio上创build的正常的Android项目。 我GOOGLE了很多运行一个单一的testing(在SimpleTesttesting,在这种情况下1testing),每个人都说我应该这样做 ./gradlew -Dtest.single=SimpleTest test 在我的根文件夹中。 或者我在我的内部项目文件夹 ../gradlew -Dtest.single=SimpleTest test 我尝试了很多这样的方法,但是它总是运行我所有的testing(在所有类中有11个testing) 在我的build.gradle有没有问题,还是有我缺less的东西? 这是我的build.gradle文件。 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' classpath 'com.github.jcandksolutions.gradle:android-unit-test:1.0.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 18 buildToolsVersion "18.1.1" defaultConfig { minSdkVersion 10 targetSdkVersion 18 // I changed this for this question packageName […]

robolectric 2 – 创buildtesting意向的活动

我正在用Robolectric写unit testing。 设置看起来像这样 @RunWith(RobolectricTestRunner.class) public class MiAirlineActivityTest { @Before public void setUpFor() { Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE, MiAirlineActivity.class); intent.putExtra(EMPLOYEEID_EXTRA, "username"); miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class) .withIntent(intent).start().get(); } } 如何在创造新意图的同时传递上下文。 我跟着这个问题的例子。 戴维德说: “…我需要给一个上下文和它被发送到的活动的类” 我究竟能做到这一点? 注意:请不要将其标记为上述链接问题的重复。 我在问一个新的问题,因为我不能在那里添加评论。

Robolectric不使用testing应用程序

根据这个链接,我可以创build一个testing应用程序,Robolectric将在testing中自动开始使用。 我无法得到这个工作。 我使用Dagger进行dependency injection,并为Activity和Application创build了注入包装类。 然后,我的每个活动都扩展了包装活动类,而不是普通的旧Activity 。 我遇到的问题是,在testing中, Application模块提供的依赖关系无法parsing,因此testing失败。 这是因为我们大多数的testing只是build立一个活动(使用Robolectric.buildActivity() ),而不是从Application运行。 我希望以某种方式修改Robolectric testrunner以在Application下运行我们的testing。 要么就是按照上面的链接所述使用testing应用程序。 我创build了一个testing应用程序,并且仍然得到相同的testing错误,因为这个testing应用程序没有运行testing。 我试着将testing应用程序移动到不同的软件包等,但没有改变。 我正在寻找一些关于如何去做我想做的事的build议。 会对那些有Dagger经验的人以及他们如何进行testing特别感兴趣。

Android构build工具1.1.0,unit testing文件夹?

我最近安装了最新的工具从谷歌到我的Android项目: buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.1.0' } } allprojects { repositories { jcenter() } } apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { applicationId "com.xxx" minSdkVersion 10 targetSdkVersion 21 versionCode 200 versionName "2.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } signingConfigs { debug […]

获取java.lang.RuntimeException:通过Maven运行Robolectric时的Stub

那么,我有一个奇怪的错误。 当我通过IntelliJ运行我的testing时,它通过没有任何问题。 但是,如果我使用确定的插件或“mvn clean test”命令运行它,我会得到以下exception: shouldLoadMoreDataOnScrollBeyondTheThreshold(br.com.cybereagle.androidwidgets.listener.EndlessScrollListenerTest) Time elapsed: 2.73 sec <<< ERROR! java.lang.RuntimeException: Stub! at junit.framework.Assert.assertTrue(Assert.java:6) at br.com.cybereagle.androidwidgets.listener.EndlessScrollListenerTest.shouldLoadMoreDataOnScrollBeyondTheThreshold(EndlessScrollListenerTest.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:246) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) […]

使用RobolectrictestingActionBarActivity时出错

我正在使用Robolectric从我的应用程序中testing活动。 该活动扩展了ActionBarActivity。 当我testing活动时,我得到的错误:“IllegalStateException:您需要使用Theme.AppCompat主题(或后代)与此活动。 我的testing环境是这样的:Android Studio 0.8.6,Robolectric 2.4-SNAPSHOT,support-v4库版本20.0,appcompat-v7版本20.0。 现在的课程。 活动 : public class FilterActivity extends ActionBarActivity testing类: @Config(emulateSdk = 18, manifest = "src/main/AndroidManifest.xml") @RunWith(RobolectricTestRunner.class) public class FilterActivityTest { private FilterActivity activity; @Before public void setUp() throws Exception { activity = Robolectric.buildActivity(FilterActivity.class).create().get(); } @After public void tearDown() throws Exception { activity.finish(); } @Test public void testOnCreate() { […]