我将 Espresso 用于一些自动化测试用例。场景是:
我有一个包含两个片段的活动,比如 FrgA 和 FrgB。
FrgA 由一个包含一些项目的列表组成,用户点击它们时会将用户带到 FrgB。
显示 FrgB 后,我会检查 FrgB 上是否存在 gridview。我为此使用的代码是:
@Test
public void testProductsDisplayed(){
onData(anything()).atPosition(1).perform(click());
onView(withId(R.id.gridview)).check(matches(isDisplayed()));
}
Run Code Online (Sandbox Code Playgroud)
我一直面临的问题是,来自 FrgA 的列表项被成功点击,它还会将我带到具有 GridView 的 FrgB。但是我的测试不会继续到测试用例的第 2 行,而是卡在第一行(click())。一段时间后它会超时。奇怪的是,如果我删除 gridview 并放置一些 TextView 并搜索它的存在,则测试通过而没有任何错误。
我唯一能想到的是在 FrgB 中加载 gridview 内容时的一些时间问题。FrgB的代码如下:
public class FrgB extends BaseFragment implements OnItemClickListener {
private View mView;
private List<Product> mProducts;
private ImagesAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d("Kart", "In onActivityCreated");
GridView gvProducts = findTypedViewById(mView, R.id.gvProducts); …Run Code Online (Sandbox Code Playgroud) 我的Android游戏GeoGuess(https://play.google.com/store/apps/details?id=uk.co.quinny898.game.geoguess)的设备崩溃导致设备崩溃
全部都是Java,所以我不明白为什么会发生这种崩溃。该崩溃发生在34个唯一的设备上(并且还在不断增加),并且确实给用户带来了问题(它似乎正在启动中)
堆栈跟踪如下:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/serranoltexx/serranolte:4.4.2/KOT49H/I9195XXUCNH5:user/release-keys'
Revision: '5'
pid: 23657, tid: 23704, name: AsyncTask #1 >>> uk.co.quinny898.game.geoguess <<<
signal 16 (SIGSTKFLT), code -6 (SI_TKILL), fault addr --------
r0 42049ee8 r1 00000000 r2 663c69c3 r3 00000000
r4 622a880e r5 64489e8c r6 6447ca98 r7 000020f4
r8 417bbf80 r9 622a8806 sl 00000000 fp 42b5f278
ip 65c49fec sp 64861c40 lr 00000000 pc 663c69d8 cpsr 600d0030
d0 …Run Code Online (Sandbox Code Playgroud)