我正在尝试使用espresso进行一些ui测试,但是当它进入通过库创建的活动时,espresso不会执行任何操作。浓缩咖啡似乎暂停并等待,直到库活动完成并恢复其余命令。
测试类:
这是我的测试课。
@RunWith(AndroidJUnit4.class)
public class MainActivityTest{
@Rule
public ActivityTestRule<MainActivity> activityTestRule =
new ActivityTestRule<>(MainActivity.class);
@Test
public void startTest) throws Exception {
// starts KEYBOARD_ACTIVITY
onView(withId(R.id.button_start)).perform(click());
// test pauses here!!
// pressBack supposed to go back to MainActivity,
// but this doesnt do anything either
// pressBack();
// click random coordinates several times
onView(withId(R.id.KEYBOARDAREA)).perform(clickXY(randomCoordinates));
// This supposed to finish the KEYBOARD_ACTIVITY and go back to MainActivity
onView(withId(R.id.button_done)).perform(click());
}
问题是单击 button_start 后,测试立即暂停,如果我什么都不做,则测试会在一分钟左右的时间内因超时(?)而失败,或者如果我退出KEYBOARD_ACTIVITY,自R.id.KEYBORDAREA消失以来,测试将继续,并放置nullpointer异常错误。
关于图书馆:
我的MainActivity带有一个按钮,可以使用MainActivity中的以下代码启动新的活动:
Intent intent = KEYBOARD_ACTIVITY.makeIntent(MainActivity.this, params);
startActivityForResult(intent, REQUEST);
由于已经作为模块依赖项添加的.aar库通过使用params本身创建了一个活动,因此我在项目内部没有活动类文件;相反,我在AndroidManifest.xml中添加了 activity ,就像添加其他活动一样。在键盘活动期间,应该让用户触摸键盘并最后点击“完成”,然后结果返回MainActivity并显示结果。
该库由使用jni(用于加密用户输入)的一些C文件以及处理外观,参数,活动等的Java代码组成。
我到目前为止所做的:
我尝试通过以下规则从KEYBOARD_ACTIVITY开始测试:
@规则 public ActivityTestRule activityTestRule = 新的ActivityTestRule <>(KEYBOARDACTIVITY.class)
但是它给出了nullPointerException错误,提示试图调用虚拟方法。
有人经历过这样的事情吗?就像浓缩咖啡对外部库调用的活动什么都不做? 还是有人知道浓缩咖啡其他活动的访问权限级别(如果存在)?也许有诸如浓缩咖啡的测试活动“焦点”之类的东西。