异步~依赖测试~可扩展至状态机
异步代码通常出现在下列领域:
基于消息的框架,其中发送者和接收者是解耦合的。(JMS)
由java.util.concurrent提供的异步机制(FutureTask)
由SWT或Swing这样的工具集开发的图形用户界面,其中代码与主要的图形部分运行在不同的线程中
当调用异步时有三种可能的结果:
调用完成并成功。
调用完成并失败。
调用没有完成。基本上,异步编程遵循着一种非常简单的模式:在发出一个请求时指定一个对象或一个函数,当收到响应时系统会调用回调
不指定回调方法:
private volatile boolean success = false;
@BeforeClass
public void sendMessage()
{
// send the message;
// Successful completion should eventually set success to true;
}
@Test(timeOut = 10000)
public void waitForAnswer()
{
while (!success) {
Thead.sleep(1000);
}
}
指定回调方法:
private volatile boolean success = false;
@Test(groups="send")
public void sendMessage()
{
// send the message;
// Successful completion should eventually set success to true;
}
@Test(timeOut = 10000,dependsOnGroups={"send"})
public void waitForAnswer()
{
while (!success) {
Thead.sleep(1000);
}
}
//现在sendMessage()是一个@Test方法,他将包含在最终的报告中,如果发送消息失败,TestNG将跳过waitForAnswer测试方法,并把他表示为SKIP
@Test(timeOut = 10000, invocationCount=100, successPercentage = 98)
public void waitForAnswerEnd(){
// 统计100次中98次通过,则通过
}
扩展
此处用到了分组依赖dependsOnGroups; 类似的还有方法依赖depensOnMethods,一定的程度上,对于一些类似于状态机的测试任务,可以利用依赖测试等效实现,终点在于测试数据的维护,状态跳转对应的测试方法映射及管理
网友评论