本人在学习 android UiAutomator 和 selenium2java 的时候,经常与遇到一些跟数据库相关的问题,比如我提交了一个订单,我想从数据库中查询这个订单的信息是否跟预期一致,或者我已经购买过一个课程,我需要从数据库中删除这条记录,方便我再去购买。如果对于一条用例来说执行一下 sql 语句就好了,但是如果对于执行很多用例的话,就不符合自动化的初衷了。所以本人在学习了 java 多线程之后,进行了一些实践。分享出来,供大家参考。
这个是我写的 ThreadTest 类的代码。很简单,暂时只实现了一个 key 控制一个功能,但是思路差不多,再改改就能实现多功能,针对每个需要操作数据库的用例都写一个 key 控制的 if-else 循环。
public class ThreadTest extends Thread{
boolean key = true;
boolean key1 = false;
public void run() {while(key){if (key1) {
try {MySql.UpdateLectureById(123456);
key = false;
} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();
}
}
}
}
public void setKey1(boolean key) {this.key1=key;}
public void setKey(boolean key) {this.key=key;}
下面是我在用例中添加的一些 setkey 方法,selenium2java 里面可以直接用,android UiAutomator 使用起来稍微麻烦一些。
// 学习角发帖
public void testLearnCornerAddQuestion() throws UiObjectNotFoundException, InterruptedException, IOException {begin();
login();
waitForTextAndClick("聊天");
waitForTextAndClick("学习角");
postNewCard();// 发帖
ThreadTest one = new ThreadTest();
one.setKey1(false);
over();}
下面是结束进程的方法,selenium2java 使用也比较简单,android UiAutomator 我使用 UiAutomatorHelper 调试来获取报告的,所以添在调试代码后面了。
public static void main(String[] args){new ThreadTest().start();
new UiAutomatorHelper("Demo", "student.Test", "testTest", "1");
new ThreadTest().setKey(false);
}
如果具体使用的时候,还需根据情况加入 join() 方法,防止异常发生。
一起来~FunTester