java - 检查 JUnit 测试用例中的超时

标签 java junit

我有一个 JUnit 测试用例,我期望特定方法调用需要很长时间(超过一分钟)。我要

  1. 进行方法调用。
  2. 确保方法调用至少需要一分钟,如果没有,则 JUnit 断言失败。
  3. 然后终止方法调用(假设它花费的时间超过一分钟),因为它可能需要很长时间。

我该怎么做?

最佳答案

您可以编写一个实现 runnable 的类来包装感兴趣的方法;假设允许生成线程。

public class CallMethod implements Runnable
{
   //time in milli
   public long getStartTime()
   {
     return startTime;
   }

   //time in milli
   public long getEndTime()
   {
     return endTime;
   }

   public void run()
   {
       startTime = ...;
       obj.longRunningMethod();
       endTime = ...;
   }
}

然后在您的 JUnit 中,您可以执行以下操作:

public void testCase1()
{
  CallMethod call = new CallMethod();
  Thread t = new Thread(call);
  t.start();
  t.join(60000); // wait one minute

  assertTrue(t.alive() || call.getEndTime() - call.getStartTime() >= 60000);

}

关于java - 检查 JUnit 测试用例中的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4037385/

相关文章:

mysql - 使用 play2 框架运行 JUnit 测试时出现 mysql 连接问题

java - 仅删除不是单词开头的元音

java - Spring 数据 Autowiring 数据库连接无法通过 JUnit 测试

java - 覆盖对象的 toString() 表示返回意外的符号

Java - 如何操纵时间进行测试?

java - 如何在Java中测试(junit)输入键盘

java - 为什么我的 @BeforeClass 方法没有运行?

java - Windows 10下Java Apps放大问题

java - 在 PicoCLI 中拆分命令

java - Java中如何使用内部静态变量?