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

jk9hmnmh  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(199)

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

  1. @PostConstruct
  2. public void init() {
  3. executorService = Executors.newFixedThreadPool(threadPool);
  4. }
  5. public void processMessage(Message receivedMessage) {
  6. executorService.submit(() -> {
  7. try {
  8. Uncovered code
  9. String threadName = Thread.currentThread().getName();
  10. log.info("Thread " + threadName);
  11. if (receivedMessage instanceof TextMessage) {
  12. TextMessage textMessage = (TextMessage) receivedMessage;
  13. String messageText = textMessage.getText();
  14. restServiceConnector.postApiCallForRetry(messageText);
  15. log.info("Received Message from Queue: " + messageText);
  16. }
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. });
  21. }

字符串

tmb3ates

tmb3ates1#

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

  1. @PostConstruct
  2. public void init() {
  3. executorService = Executors.newFixedThreadPool(threadPool);
  4. }
  5. public void processMessage(Message receivedMessage) {
  6. executorService.submit(() -> {
  7. try {
  8. myFunc(receivedMessage);
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }
  12. });
  13. }
  14. void myFunc(Message receivedMessage){
  15. String threadName = Thread.currentThread().getName();
  16. log.info("Thread " + threadName);
  17. if (receivedMessage instanceof TextMessage) {
  18. TextMessage textMessage = (TextMessage) receivedMessage;
  19. String messageText = textMessage.getText();
  20. restServiceConnector.postApiCallForRetry(messageText);
  21. log.info("Received Message from Queue: " + messageText);
  22. }
  23. }

字符串

展开查看全部

相关问题