模拟Java中的延迟

时间:2010-06-30 20:52:11

标签: java testing automated-tests

我正在开发一个简单的Java测试框架,需要通过响应JMS调用来模拟weblogic部署。其中一个测试配置选项是模拟延迟的延迟。我想知道是否有人对如何做到这一点有任何好的想法。我是jsut要创建一个TimerTask来处理它,有更好的方法吗?感谢。

4 个答案:

答案 0 :(得分:3)

您可以创建一个ScheduledExecutorService来执行延迟后的操作。

private final ScheduledExecutorService executor =
    Executors.newSingleThreadScheduledExecutor();


// is main loop, waits between 10 - 30 ms.  
executor.schedule(new Runnable() { public void run() {
   // my delayed task
}}, 10 + new Random().nextInt(20), TimeUnit.MILLI_SECOND); 

编辑:您可以将Concurrency Backport用于JDK 1.4。它适用于JDK 1.2到JDK 6

答案 1 :(得分:3)

创建一个模拟服务器的对象。当它“接收”你的输入时,让它产生一个新的线程来“处理连接”,就像真正的服务器一样。产生的线程可以将Thread.sleep()转换为其内容,以模拟发送和接收延迟,并允许您模拟在测试期间可能有用的一些服务器状态属性。

答案 2 :(得分:2)

如何

Thread.sleep(10 + new Random().nextInt(20)); // waits between 10 - 30 ms.

即。在响应JMS调用的代码中,您只需使用它来模拟随机延迟延迟。

答案 3 :(得分:0)

您可以使用Quartz安排作业,这是否可以解决问题?