最近在做一个蓝牙稳定性的自动化测试工具,就是用app模拟人的行为,自动去跑一些蓝牙相关的测试用例,譬如间隔传输数据、传输大数据、反复开关蓝牙等,再加上不同的参数配置,一共加起来大概有30多个case要跑,并且需要这些case串行执行,就是一个case跑完了才能执行下一个。这个时候如果没有一个设计框架在里面,直接硬编码实现每一个case会无比混乱,尤其是想实现串行执行会很麻烦。所以搞了一套框架,主要使用了模版方法模式、责任链模式这两个设计模式.
1.模版方法模式:
我们将每个测试用例抽象成一个Task, 下面Task的超类,这里面我们可以看到,Task有onStart、onExecute 、onStop三个生命周期方法,其中onExecute可能会被多次调用,因为一个用例可能会被多次执行。同时与三个生命周期方法想对应的是三个控制方法,start execute stop.以前我还对这种设计的好处不是很有体会,但这次在自己使用过程中,确实发现了这种方式对于子类执行流程控制的绝大好处。
public abstract class BasicTask {
private BasicTask mNext;// 该task的下一个要要执行task
protected void onStart() {
}
protected void onExecute() {
}
protected void onStop() {
}
public void start(TaskStateListener listener) {
onStart();
}
protected void execute() {
if (!isStop) {
if (!isConnected()) {
isDisConnectedWhenExecute = true;
EventBus.getDefau

在构建蓝牙稳定性自动化测试工具时,采用模版方法和责任链模式设计了一个框架。模版方法将每个测试用例抽象为Task,通过onStart、onExecute和onStop生命周期方法及对应的控制方法,实现对子类执行流程的有效控制。责任链模式则通过任务之间的引用链接,使执行流程清晰,遵循面向对象编程原则,简化了中心总控task的切换工作。
最低0.47元/天 解锁文章
1021

被折叠的 条评论
为什么被折叠?



