Java 中 Thread.sleep() 的 Junit 测试

0 java junit multithreading

我想为函数编写单元测试用例来测试 Thread.sleep() 函数是否正常工作。

有人可以提供一段代码来帮助我完成这项任务吗?:

public class A implements B {

 public int func(String A) throws ApplicationException {

    int ctr = 0;
    int ans = 0;

    for (int i=0;i<100020;i++) {
        try {
              ++ctr;
              if(ctr%50==0)
              {
                   try
                   {
                          Thead.sleep(1000);
                   }
                   catch(java.lang.InterruptedException ie)
                   {
                        System.out.println(ie);
                   }

              }
        } 
        catch (Exception e) {

        } 
        finally {

        }
    }

    return ans;
  }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ner 5

创建Sleeper接口:

interface Sleeper {
  void sleep(long millis) throws InterruptedException;
}
Run Code Online (Sandbox Code Playgroud)

然后将 this 的一个实例注入到方法中作为参数,或者作为构造函数的参数。然后调用代替Thread.sleep.

对于测试,您可以简单地传入一个模拟,并检查它是否被调用了预期的次数。这就是您应该测试的全部内容:可以安全地假设该Thread.sleep方法有效;您只需要确保以您期望的方式使用它。

这当然也允许您的测试运行得更快(如果您愿意),因为您的模拟不必等待“真正的”睡眠。

  • @tourani123 说真的:他告诉你**所有**你需要开始的事情。你不会通过其他人为你做事来学习。你通过自己做事来学习。 (2认同)