Spring Boot 如何在junit测试中覆盖executorService?

jk9hmnmh  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(71)

我需要为下面的代码编写junit测试,我在这里使用executorService,我不知道要为此编写测试。

@PostConstruct
    public void init() {
        executorService = Executors.newFixedThreadPool(threadPool);
    }

public void processMessage(Message receivedMessage) {
        executorService.submit(() -> {
            try {
Uncovered code
                String threadName = Thread.currentThread().getName();
                log.info("Thread " + threadName);
                if (receivedMessage instanceof TextMessage) {
                    TextMessage textMessage = (TextMessage) receivedMessage;
                    String messageText = textMessage.getText();
                    restServiceConnector.postApiCallForRetry(messageText);
                    log.info("Received Message from Queue: " + messageText);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }

字符串

tmb3ates

tmb3ates1#

假设您不想测试ExecutorService,您可以将代码提取到一个包私有(no-modifier)函数中,然后您可以自己测试它。

@PostConstruct
public void init() {
  executorService = Executors.newFixedThreadPool(threadPool);
}

public void processMessage(Message receivedMessage) {
  executorService.submit(() -> {
    try {
      myFunc(receivedMessage);
    } catch (Exception e) {
      e.printStackTrace();
    }
  });
}
  
void myFunc(Message receivedMessage){
  String threadName = Thread.currentThread().getName();
  log.info("Thread " + threadName);
  if (receivedMessage instanceof TextMessage) {
    TextMessage textMessage = (TextMessage) receivedMessage;
    String messageText = textMessage.getText();
    restServiceConnector.postApiCallForRetry(messageText);
    log.info("Received Message from Queue: " + messageText);
  }
}

字符串

相关问题