如何在junit测试中覆盖executorService?

问题描述 投票:0回答:1

我需要为下面的代码编写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();
            }
        });
    }
java spring-boot unit-testing junit4
1个回答
0
投票

假设您不想测试

ExecutorService
,您可以将代码提取到包私有函数中,然后您可以自己进行测试。

@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);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.