如何使用 junit5 覆盖 taskExecutor.execute(new Runnable..) 中编写的代码

How to Cover code written inside taskExecutor.execute(new Runnable..) using junit5

想为 execute 方法中的代码编写 junit5 测试 case/coverage 如下是我的示例(虚拟)src class,实际方法包含项目的大量业务逻辑。

如果我模拟 taskExecutor,它会用虚拟值绕过整个 execute()。

关于如何在附加代码中覆盖 运行 方法的任何建议,下面是示例测试用例

您可以将您的 in-lined Runnable 外包给自己的 class,例如:

public class MyRunnable implements Runnable {

  private final JdbcTemplate jdbcTemplate;

  public MyRunnable(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
  }

  @Override
  public void run() {
    // ... do your logic here
  }
}

然后为此 class 编写单元测试以单独验证其行为。

在您的 RedisScheduler 中,您可以使用新的 class:

taskExecutor.execute(new MyRunnable(jdbcTemplate));