我正在使用robolectric来使我的android单元测试足够快,以使其有用。我想在屏幕方向发生变化以模拟常见的现实世界用例时测试我编写的代码是否有效。具体来说,我正在测试的是对服务器的异步http调用,并在获取结果后解析了一些xml。我对所有工作都进行了单元测试,但无法弄清楚如何模拟屏幕旋转。任何导致Activity重新创建自身的状态更改都可以,不一定是屏幕旋转。使用模拟器的解决方案不是一个选项,因为我每分钟运行几次测试并且它们必须在2秒内运行。如果可能的话,我也希望它与roboguice一起使用。谢谢。 最佳答案 在Robo
使用gradledef(https://plus.google.com/+IanLake/posts/JW9x4pcB1rj)支持v4-r21添加Multidex支持applyplugin:'com.android.application'android{compileSdkVersion19buildToolsVersion"20.0.0"defaultConfig{applicationId"info.osom.multidex"minSdkVersion19targetSdkVersion19versionCode1versionName"1.0"}buildTypes{rele
我正在尝试使用Robolectric设置测试以单击thisrepository中的菜单按钮.基本的Robolectric测试将运行,但我无法使用资源运行任何特定于项目的测试,因为它说它找不到我的AndroidManifest.xml。运行../gradlewcleancheck后,这是Robolectrichtml文件的标准输出:警告:在./AndroidManifest.xml中找不到list文件。仅回退到Android操作系统资源。要删除此警告,请使用@Config(manifest=Config.NONE)注释您的测试类。我找到了theseinstructions这表明我应该创建
在Robolectric中模拟按钮点击相当简单:ButtonsomeButton=(Button)findViewById(R.id.some_button);someButton.performClick();但是,我似乎不知道如何对菜单项做同样的事情。我在Activity.onCreateOptionsMenu中创建了一个菜单,如何模拟点击其中一项? 最佳答案 MenuItemitem=newTestMenuItem(){publicintgetItemId(){returnR.id.hello;}};activity.onOp
我建立了一个非常简单的项目来测试Robolectric+DataBinding+Retrolambda的集成。当我运行测试服时,我收到以下消息:Error:(30,30)Gradle:error:cannotaccessAndroidHttpClientclassfileforandroid.net.http.AndroidHttpClientnotfound这很奇怪,因为我没有在任何地方使用AndroidHttpClient。错误发生在这里,在“Activity”行:@Beforepublicvoidsetup(){activity=Robolectric.setupActivity
我正在尝试将我的Robolectric测试与新的GradleAndroid构建系统一起运行,但我无法访问我的主项目的资源。为了避免java和androidgradle插件之间的冲突,我将构建拆分为两个独立的项目,所以目录结构大致如下:.├──build.gradle├──settings.gradle├──mainproject│ ├──build│ │ ├──classes│ │ │ └──debug│ ├──build.gradle│ └──src│ └──main│ ├──AndroidManifest.xml│ └──...└──test├──build.
AndroidStudio3.0Beta2classpath'com.android.tools.build:gradle:3.0.0-beta3'testCompile'org.robolectric:robolectric:3.4.2'我正在使用的测试类无法运行:@Config(constants=BuildConfig.class,sdk=Build.VERSION_CODES.LOLLIPOP)@RunWith(RobolectricTestRunner.class)publicclassRecipeAdapterTest{privateMainActivityactivity
我需要在AndroidStudio+Robolectric中执行测试时运行调试。每次我尝试通过从Gradle任务中为test任务选择debug来运行它们时,我都会收到错误消息:Errorrunningpackage_name:app_name[test]:Unabletoopendebuggerport:java.net.SocketException"Socketclosed"有什么想法吗? 最佳答案 我找到了错误的原因。要使其运行,您需要取消选中Compiler->AndroidStudio的Gradle设置中的“使用进程内构建
所以我最近将我的robolectric3.0升级与我们的主线合并,它为我们的应用程序添加了multidex支持。不幸的是,这带来了不幸的副作用,导致我们的测试失败/不运行——在第一次尝试安装MultiDex失败后,它们会简单地停止,并带有以下堆栈跟踪:java.lang.RuntimeException:java.lang.RuntimeException:Multidexinstallationfailed(/Users/me/Data/Projects/my-android/myapp/.(Isadirectory)).atorg.robolectric.RobolectricTe
是否Robolectric与相比提供任何明显的好处Android测试框架?我已经阅读了有关这两个框架的文档,但据我所知,关于的唯一明确好处是Robolectric是它运行在JVM而不是DalvikVM上,使其比Android框架更快。还有其他突出的主要好处吗? 最佳答案 2015年4月更新:Gradle构建工具和AndroidStudionowofficiallysupportunittesting并防止android.jar抛出stub(没有真正的实现)错误。所以,是的,当stub被适本地模拟时,它可以在JavaVM上运行测试。它