Articles of robolectric

用gradle测试一个android项目的junit测试

我试图让测试(junit和robolectric)在Android项目中工作,但我完全陷入困境。 我的主要问题是我用gradlefind的所有测试都以某种方式拉入了java插件然后我得到了这个错误: The ‘java’ plugin has been applied, but it is not compatible with the Android plugins. 我目前看到的唯一出路是分成测试和应用项目 – 但我想避免这种情况。 任何示例/提示都将受到高度赞赏! 在官方文档中没有提到unit testing – 只有仪器测试 – 但我希望unit testing能够快速获得结果。

如何使用Android Studio运行unit testing

我正在使用Jake的Androidunit testing插件进行gradle: https : //github.com/JakeWharton/gradle-android-test-plugin 我的build.gradle看起来像这样: dependencies { // analytics compile(‘com.crittercism:crittercism-android:3.0.11’) // retrofit compile(‘com.squareup.retrofit:retrofit:1.2.2’) compile(‘com.squareup.okhttp:okhttp:1.2.1’) // dagger compile(‘com.squareup.dagger:dagger:1.1.0’) compile(‘com.squareup.dagger:dagger-compiler:1.1.0’) // compatibility compile(‘android.compatibility:android-support:v4-r13’) compile(‘com.actionbarsherlock:actionbarsherlock:4.4.0@aar’) // Picasso compile(‘com.squareup.picasso:picasso:2.1.1’) // Otto compile(‘com.squareup:otto:1.3.4’) // Tests testCompile ‘junit:junit:4.10’ testCompile ‘org.robolectric:robolectric:2.2’ testCompile ‘org.powermock:powermock-api-mockito:1.5.1’ testCompile ‘org.easytesting:fest-assert-core:2.0M10’ } 不幸的是,我无法运行所有或特定的unit testing表单Android Studio。 我收到错误: Exception in thread “main” java.lang.NoClassDefFoundError: junit/textui/ResultPrinter at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:171) […]

无法findJava Runtime Android Studio Robolectric

我已将Robolectric添加到Android项目中。 我在19.0.1中使用带有Build Tools的Android Studio。 我可以运行测试: $./gradlew test 哪个执行得好。 如果我尝试: $ gradle installDebug 它也执行得很好: $ ./gradlew installDebug WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for debugTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for […]

模拟Robolectric中菜单项的单击

在Robolectric中模拟按钮单击非常简单: Button someButton = (Button) findViewById(R.id.some_button); someButton.performClick(); 但是,我似乎无法弄清楚如何用菜单项做同样的事情。 我在Activity.onCreateOptionsMenu创建了一个菜单,如何模拟其中一个项目的点击?

为什么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(); } } 如何在创造新意图的同时传递上下文。 我跟着这个问题的例子。 戴维德说: “…我需要给一个上下文和它被发送到的活动的类” 我究竟能做到这一点? 注意:请不要将其标记为上述链接问题的重复。 我在问一个新的问题,因为我不能在那里添加评论。