首页 > 解决方案 > 如何使用 junit5 覆盖 taskExecutor.execute(new Runnable..) 中编写的代码

问题描述

想为执行方法中的代码编写junit5测试用例/覆盖如下是我的示例(虚拟)src类,实际方法包含项目很多业务逻辑。

在此处输入图像描述

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

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

在此处输入图像描述

标签: javaspringspring-bootjunitjunit5

解决方案


您可以将您的内联外包Runnable给它自己的类,例如:

public class MyRunnable implements Runnable {

  private final JdbcTemplate jdbcTemplate;

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

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

然后为这个类编写一个单元测试来单独验证它的行为。

RedisScheduler然后你可以在你的内部使用你的新类:

taskExecutor.execute(new MyRunnable(jdbcTemplate));

推荐阅读