不能用robolectric捕获HTTP请求
我试图用robolectric捕获HTTP请求 Tokenize方法的方法将请求发送到服务器,我只想测试该帖子已发送: 如果我尝试 //Cardtest.java Robolectric.setDefaultHttpResponse(200, "dummy"); card.tokenize(paymentHandler); Robolectric.getSentHttpRequest(0); 我有一个空数组错误 ,但我知道该请求是发送的,因为如果我删除第一行,我会有以下错误: Unexpected HTTP call POST 如果我放上日志语句,看来我的成功块从未被要求用于HTTP请求. 我如何确保我的http请求成功回电. (我已经尝试了robolectric.runuithreadtasksincludingdelayedtasks();) 谢谢 解决方案 正如我们在评论中讨论的那样.问题是因为Robolectric配置为不拦截
2 2023-11-07
编程技术问答社区
如何通过单元测试覆盖异常分支
我使用Junit4和Mockito编写单元测试以进行我的应用程序,我想全面覆盖.但是我不完全了解涵盖异常分支. 例如: try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } 我如何从测试异常中调用? 解决方案 虽然您可能无法轻易地将异常插入Thread.sleep,因为它是静态称为而不是针对注射的实例,但您可以轻松地将依赖性固定在称为: @Test public void shouldHandleException() throws Exception { // Use "thenThrow" for the standard "when" syntax. when(dependency.someMethod()).thenThrow(new IllegalArgumentException()); // Void method
2 2023-11-07
编程技术问答社区
我需要启用或安装什么来获得@RunWith注释?
我想使用Android Studio为Android应用程序创建一个简单的测试. 好吧,这是我的build.gradle root目录: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' } } allprojects { repositories { jcenter() } } 这是我的应用程序build.gradle文件: apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.1" sourceSets { androidTest.
0 2023-11-07
编程技术问答社区
PowerMock + Robolectric + Dagger2
我测试包含: 的自定义视图类 Android UI元素 一些逻辑 静态方法呼叫 Dagger2依赖项 所以我使用下一个工具进行测试 UI元素嘲笑的robolectric 逻辑测试的单元测试 静态方法的PowerMock模拟 robolectric + powermock集成问题是已知的,解决方案是 .com/robolectric/robolectric/wiki/lust-powermock 但是使用此解决方案dagger2依赖性失败. 注意代码. 我的自定义视图: public class ProgressTextView extends TextView { private String defaultText; private int fileSize; private String fileSizeString; private FileDownloaderI fileDownloader;
10 2023-11-07
编程技术问答社区
Robolectric 1.2 : "警告:无法找到Android SDK的路径"
我使用 robolectric 1.1 jar-with依赖性 在我的项目中并成功使它起作用,但是当我将罐子更改为 时 1.2-snapshot jar-with依赖性 我得到以下警告: 警告:无法找到通往Android SDK的路径 两种罐子都从 sonatype t使用maven). 我尝试了 this this 问题并仍然发出警告. 解决方案 我跟随此 1-将Android SDK DIR添加到bash_profile,首先打开文件: sudo vim ~/.bash_profile 然后添加以下行:(请记住将your_android_sdk_path_here'替换为Android SDK文件路径(例如/users/xxx/development/android-sdk-mac_x86))export ANDROID_HOME=YOUR_ANDROID_SDK_PATH_HERE 2-创建一个名为local.pro
2 2023-11-07
编程技术问答社区
java.lang.NoSuchMethodError: java.lang.System.arraycopy using XmlPullParser with Robolectric
我正在尝试使用Robolectric在Android-Studio中测试我的Android应用程序.我的单位测试之一使用XmlPullParser: InputStream in = new FileInputStream(new File("somefile.xml")); XmlPullParser parser = Xml.newPullParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); parser.setInput(in, null); parser.nextTag(); while(parser.next()!=XmlPullParser.END_DOCUMENT){ // ... } 这是我运行测试时发生的事情: java.lang.NoSuchMethodError: java.lang.System.arraycopy([II[III)V
8 2023-11-07
编程技术问答社区
构建工具的Gradle Android单元测试依赖于一个'ar',0.11.+。
我正在使用Gradle Build System运行Roboletric测试 - 依赖于'aar''的gradle android单位测试>依赖于'aar',但该解决方案仅适用于构建工具版本0.9.++ 0.11.++++ 因为我找不到爆炸的目录.有什么想法吗? 这是部分构建文件 configurations { testLocalCompile { extendsFrom compile } } sourceSets { testLocal { java.srcDir file('src/test/java') resources.srcDir file('src/test/res') compileClasspath += configurations.testLocalCompile runtimeClasspath += compileClasspath
0 2023-11-07
编程技术问答社区
Robolectric: 模拟测试中的网络错误
如何产生相同的例外,例如在robolectric测试中的真实连接误差中? ? 如果网络当前不可用,我想如何行动.我的httpclient是否有可能产生相同的例外? 我已经尝试过: Robolectric.getFakeHttpLayer().interceptHttpRequests(false); // with real network to a non existent IP 和 WifiManager wifiManager = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(false); 和 Robolectric.addPendingHttpResponse(404, null); ,但它们都没有产生像真实连接的相同反应. 谢谢 解决方案 我已经检查了Robolectric's Fake
2 2023-11-07
编程技术问答社区
Robolectric不能正确处理getApplicationContext()-NPE
我一直在使用Robolectric在Android应用程序上进行了一些测试,并且一直运行良好. 我的应用程序将getApplicationContext()的结果传递给构造函数,但是RoboLectric应该确保它的值并非null,因为我使用了buildActivity()方法.该错误是在我的测试环境的某些配置中,或者是robolectric中的错误.结果是吐司的构造函数中的nullpoInterException. 我的环境: com.android.tools.build:gradle:3.0.1 org.robolectric:robolectric:3.4.2 junit:junit:4.12 我正在尝试测试我们的类SystemMonitorActivity,这是抽象 public abstract class SystemMonitorActivity extends BaseActivity implements OnClickListener
8 2023-11-07
编程技术问答社区
使用Picasso和Robolectric的假性测试失败
我刚刚升级为Robolectric 2.1.1并立即集成了毕加索.我现在有两个随机失败的测试用例(这些片段之一甚至不使用毕加索).如果我继续进行测试,通常一切通常都会通过(可能需要进行几次尝试). 测试 @Before public void setUp() throws Exception { detailActivity = Robolectric.buildActivity( ActivityUnderTest.class ) .withIntent( createIntent() ) .create() .start() .resume() .g
0 2023-11-07
编程技术问答社区
PowerMock + Robolectric + Dagger2. 第一部分
这个问题是从 powermock + robolectric + robolectric + dagger2 所以我又有一点了.对不起. 我测试包含: 的自定义视图类 Android UI元素 一些逻辑 静态方法呼叫 Dagger2依赖项 因此,我使用下一个工具进行测试 UI元素嘲笑 的robolectric 逻辑测试的单元测试 静态方法模拟的PowerMock robolectric + powermock集成问题是已知的,解决方案是 .com/robolectric/robolectric/wiki/lust-powermock 但是有了这个解决方案,Dagger2依赖性失败了. 注意代码 我的自定义视图 - progressTextView : public class ProgressTextView extends TextView { private String defaultText;
4 2023-11-07
编程技术问答社区
AndroidThreeTen在没有robolectric的单元测试中不工作?
我在不需要robolectric的情况下创建单元测试时遇到了麻烦.我在代码中使用androidthreeten.init(this),如果我禁用Robolectric,则在运行测试时会遇到错误: org.threeten.bp.zone.ZoneRulesException: No time-zone data files registered ,如果我启用了它,我会得到这个: [Robolectric] com.mycomp.,yapp.utilities.log.LogTest.on Calling function w it returns an Int: sdk=28; resources=BINARY 我尝试使用tistimpletation‘com.jakewharton.threetenabp:threetenabp:1.1.0' 没有什么区别.我有Androidthreeten.init(此)在我的应用程序和testapplication中调用.有任何想法吗?
4 2023-11-07
编程技术问答社区
添加解决信息到Robolectric软件包管理器
这个问题与我想做的事情非常相似:但是,所有答案都取决于shadowapplication.setpackagemanager().在2.2中,这种方法似乎不再存在:我尝试只抓住软件包管理器并添加解决信息: RobolectricPackageManager packageManager = (RobolectricPackageManager) Robolectric.application.getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN,null); intent.addCategory(Intent.CATEGORY_HOME); ResolveInfo ri = new ResolveInfo(); ActivityInfo ai = new ActivityInfo(); ai.packageName = "com.fun.test";
4 2023-11-07
编程技术问答社区
我如何使用Active Android与内存数据库进行单元测试,使用Robolectric?
标题所说.我知道在Robolectric中提供的内存数据库中有限.有什么方法可以将其与Active Android一起使用?在默认配置下,似乎在运行所有测试后清除数据库,但对于每个测试都不清除. 解决方案 我使用greendao-但是原理是相同的. 我的应用程序类启动了我的数据库(DB有一个名称).对于我的测试,我是子类应用程序(允许Robolectric改为调用此版本),并覆盖获取数据库名称的方法并返回null.然后,这意味着我创建一个内存db.由于应用程序创建是设置的一部分,因此每个测试中使用了新的内存DB中的新内存. public class MyApplication extends android.app.Application { @Override public void onCreate() { super.onCreate(); initialiseDB(getDatabaseName());
8 2023-11-07
编程技术问答社区
有人在IntelliJ上使用没有Maven的Robolectric吗?
所有使用Robolectric的示例我都可以发现基于Maven.有人不使用Maven吗?如果是这样,我真的很想了解您的Intellij项目设置. 阅读了这篇文章 与纯Junit,Robolectric和Android测试框架测试结合使用单位测试物Android项目的分层方法似乎很明智.如果有人在有或没有Maven的情况下进行此操作,我很想了解您如何在Intellij中配置您的项目. 我猜我将需要多个项目/模块.感激地收到的任何智慧. 解决方案 Maven是使事情更方便的好工具.如果您仍在寻找一种无需Maven内部在Intellij内部安装Robolectric的方法,请遵循: 下载robolectric: 搜索;快速〜Robolectric 下载最新的jar-with intedencies.jar文件. 下载并将其放入应用程序项目的libs/目录 使用以下文件结构设置您的应用程序源 (这是将目录设置为robolectric Testing的一种广泛
0 2023-11-07
编程技术问答社区
调用Robolectric.buildActivity()时出现Resources$NotFoundException。
我正在使用Robolectric 3.0 RC3进行Android Studio中的单位测试.每次我进行测试时,我都会得到ResourceNotFoundException.请帮助我解决这个问题. build.gradle dependencies { testCompile 'junit:junit:4.12' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.0.0' testCompile 'org.mockito:mockito-core:1.9.5' testCompile 'org.robolectric:robolectric:3.0-rc3' compile 'com.ibm.icu:icu4j:53.1' } 测试类 @Before public void set
16 2023-11-07
编程技术问答社区
安卓。用Robolectric和Mockito对Android应用程序进行单元测试
我有一个Java库,它使用了Android API中的一些内容.我想使用Mockito为此库编写单元测试. 有办法解决这个问题吗? Mockito在Dalvik VM上表现不佳,请参阅此帖子:与Android一起使用Mockito虚拟机 更新: 自从这篇文章以来,我发现了Robolectric,并且我有机会从关键的实验室中工作,并为此图书馆做出了一些小的贡献.我建议在Android测试框架/Mockito上使用它.另外,您可以自由使用Robolectric和Mockito,但是在大多数用例中,Robolectric中的影子对象都不需要Mockito. 试图对Android进行单位测试的问题是,您构建的Android库具有每种方法以抛出存根异常或返回null.如果您想测试您的应用程序并希望任何Android行为都无法运气,除非您使用Robolectric在类上加载时即时重写字节代码,并注入模拟行为的阴影对象. 更新2: 已经有一段时间了,情况已经改
2 2023-11-07
编程技术问答社区
如何打开robolectric的日志记录
我需要一种非常简单的方法来获取Robolectric 3.0打开记录.我想看到Robolectric的输出,而不仅仅是我的测试.我在网络上尝试的一切都无法正常工作. 我在哪里贴这个? robolectric.logging.enabled = true 我尝试了以下内容: 在test/java/res 中的robolectric.properties文件中 在test/java/resources 中的robolectric.properties文件中 在test/res 中的robolectric.properties文件中 在robolectric.properties文件中,在测试/资源中 在gradle中: afterEvaluate { project.tasks.withType(Test) { systemProperties.put('robolectric.logging.enable', 'true
0 2023-11-07
编程技术问答社区
单元测试 Glide:确保 ImageView 具有正确的图像
Android Studio 3.0 Beta 5 robolectric:3.3.1 i具有以下视图持有人,该视图持有人使用Glide库加载图像URL.我正在尝试找到一种单元测试的方法: public class MovieActorsViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.civActorPicture) CircleImageView actorPicture; @BindView(R.id.tvName) TextView name; @BindView(R.id.tvCharacter) TextView character; private Context context; public MovieActorsViewHolder(View itemView) { supe
2 2023-11-07
编程技术问答社区
如何在Android Robolectric测试中强制改变配置?
我正在使用Robolectric使我的Android单元测试足够快,以至于很有用.我想测试我编写的作品的代码,而屏幕方向正在更改以模拟常见的现实世界用例. 特别是我正在测试的是对服务器的异步HTTP调用,并在获取结果后进行了一些XML.我对所有运行良好的单位测试进行了测试,但无法弄清楚如何模拟屏幕旋转.导致活动重新创建本身的任何状态变化都很好,不一定是屏幕旋转. 使用模拟器的解决方案不是一个选项,因为我每分钟几次进行测试,并且必须在2秒钟以下运行.如果可能的话,我也希望这可以与Roboguice一起使用. 谢谢. 解决方案 您要编译什么Android API级别?如果是3.0或以上,则可以尝试 使此活动通过新实例重新创建.由于配置更改而创建活动时,这基本上的流程基本相同 - 当前实例将通过其生命周期到OnDestroy(),然后在其之后创建了一个新实例. 虽然自己还没有尝试过. 其他解决方案 在Robolectric中调用Reboreate(请注
4 2023-11-07
编程技术问答社区