小编hiB*_*Lee的帖子

如何在Android Espresso测试中测试setResult()?

有没有什么好方法可以在Android Espresso测试中测试结果代码和数据?我正在使用Espresso 2.0.

假设我有一个Activity被叫BarActivity.class,在执行一些动作时,调用setResult(int resultCode, Intent data)适当的有效负载.

我想写一个测试用例来验证resultCodedata.但是,因为setResult()是一种final方法,我无法覆盖它.

我想到的一些选项是:

  • 定义一个新的方法setActivityResult(),只是使用它,以便它可以被拦截,等等......
  • 写一个唯一的测试,测试活动将调用startActivityForResult()BarActivity,并检查结果TestActivity.onActivityResult()

试着想一下这两个邪恶中的哪一个更少,或者是否有关于如何测试这个的任何其他建议.有什么建议?谢谢!

android android-testing android-espresso

11
推荐指数
2
解决办法
3902
查看次数

使用回调/侦听器链接RxJava observable

我正在使用Obtrables的Retrofit,并希望链接可观察量.通常它适用于像map()或之类的函数flatMap(),因为api返回执行任务的Observable.但在这种情况下,我必须做以下事情:

  1. 来自的getKey() api
  2. 使用另一个库中的返回键Foo并等待调用回调.
  3. 当回调返回时,将结果发送给api.

我希望这是一个单一的链接调用,所以我只需要订阅一次.我猜我可以使用merge()或者join()什么,但不确定处理回调的最佳方法是什么.

有没有办法让这更好?这是我到目前为止:

api.getKey().subscribe(new Action1<String>() {
   @Override
   public void call(String key) {
      Foo foo = new Foo();
      foo.setAwesomeCallback(new AwesomeCallback() {
         @Override
         public void onAwesomeReady(String awesome) {
            api.sendAwesome(awesome)
                    .subscribe(new Action1<Void>() {
                       @Override
                       public void call(Void aVoid) {
                           handleAwesomeSent();
                       }
                    });
         }
      });
      foo.makeAwesome();
   }
});
Run Code Online (Sandbox Code Playgroud)

android reactive-programming observable rx-java rx-android

9
推荐指数
1
解决办法
6669
查看次数

Android ClassCastException with blank type

I am getting a strange behavior, and I guess I'm more looking for an explanation than a solution (although solution is welcome as well!).

Here's the code:

PackageManager pm = context.getPackageManager();
List<PackageInfo> pkgList = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
if (pkgList == null)
   return null;
for (PackageInfo pkgInfo : pkgList) {
   ApplicationInfo appInfo = pkgInfo.applicationInfo;
   // do some stuff, doesn't modify pkgInfo or appInfo or pkgList
} 
Run Code Online (Sandbox Code Playgroud)

And on some occasions, I am getting error logs with:

java.lang.ClassCastException: cannot be cast to android.content.pm.PackageInfo

reported …

java android exception classcastexception android-package-managers

8
推荐指数
1
解决办法
462
查看次数