我正在测试的应用程序在安装后第一次启动时显示一个信息屏幕,并带有“继续”按钮以关闭。我想编写将在第一次启动(即从APK运行为JUnit时)或后续启动(即直接JUnit)时运行的测试。我正在尝试使用我能想到的最简单的条件,例如......
if (solo.waitForText("Continue", 20000)) {
solo.clickOnButton("Continue");
}
下一步......
如果“继续”按钮在那里(来自APK测试运行),测试将通过但是当按钮不存在时失败(根据clickOnButton中的ADK)(直接JUnit运行)。我做错了什么?
14年2月21日
也许我应该重新开始。
我正在测试的应用程序在安装后第一次启动时显示一个信息屏幕,并带有“继续”按钮以关闭。此应用程序的后续启动中不会显示此屏幕。我想编写将在第一次启动(即从APK运行为JUnit时)或后续启动(即直接JUnit)时运行的测试。我通过使用Testdroid记录动作开始了这个测试,它打开了这样的测试:
public void testRecorded() throws Exception {
try {
solo.waitForActivity("splash");
solo.waitForActivity("Login");
assertTrue(
"Wait for text (id: com.<app identified>.R.id.continue_txt) failed.",
solo.waitForTextById(
"com.<app identified>.R.id.continue_txt", 20000));
solo.clickOnText((TextView) solo
.findViewById("com.<app identified>.R.id.continue_txt"));
只要在运行测试之前重新安装应用程序(从APK运行),这很有效,但很明显,在后续启动时失败(以直接JUnit运行),因为屏幕永远不会显示。我试图用“if”条件括起waitForTextById和clickOnText语句,但它没有用,所以我试着简化为
if (solo.waitForText("Continue", 20000)) {
solo.clickOnButton("Continue");}
然后尝试
if (solo.searchText("Continue")) {
solo.clickOnButton("Continue");}
这些都没有奏效。根据Eclipse,当测试无法点击按钮时测试失败(因为按钮不在那里)。 我对Java的了解至多是最基本的。我在这里不理解什么?
答案 0 :(得分:1)
试试这个:
if (solo.searchText("Continue")) {
solo.clickOnButton("Continue");
}
答案 1 :(得分:0)
我终于弄明白了问题所在。一旦我将整个assertTrue语句放在if条件而不仅仅是solo.waitForTextById中,它就开始按我的意愿工作了。这个问题是由于我对Java的经验有限。
感谢所有为您提供帮助的人。