有没有什么好方法可以在Android Espresso测试中测试结果代码和数据?我正在使用Espresso 2.0.
假设我有一个Activity被叫BarActivity.class,在执行一些动作时,调用setResult(int resultCode, Intent data)适当的有效负载.
我想写一个测试用例来验证resultCode和data.但是,因为setResult()是一种final方法,我无法覆盖它.
我想到的一些选项是:
setActivityResult(),只是使用它,以便它可以被拦截,等等......startActivityForResult()上BarActivity,并检查结果TestActivity.onActivityResult()试着想一下这两个邪恶中的哪一个更少,或者是否有关于如何测试这个的任何其他建议.有什么建议?谢谢!
我正在使用Obtrables的Retrofit,并希望链接可观察量.通常它适用于像map()或之类的函数flatMap(),因为api返回执行任务的Observable.但在这种情况下,我必须做以下事情:
apiFoo并等待调用回调.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) 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