簡體   English   中英

Spring boot junit 測試加載應用程序上下文失敗

[英]Spring boot junit test failed loading application context

當我在類 MailServiceTest 上運行 junit 測試時它工作正常,但是當我嘗試執行 mvn build -B 時它失敗了。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = InstaticketapiApplication.class)
public class MailServiceTest {

@Autowired
private ApplicationProperties applicationProperties;

@Autowired
private MessageSource messageSource;

@Autowired
private SpringTemplateEngine springTemplateEngine;

@Spy
private JavaMailSenderImpl javaMailSender;

@Captor
private ArgumentCaptor messageCaptor;

@Autowired
private MailService mailService;


@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
    doNothing().when(javaMailSender).send(any(MimeMessage.class));
    mailService = new MailService();
    mailService.setApplicationProperties(applicationProperties);
    mailService.setJavaMailSender(javaMailSender);
    mailService.setMessageSource(messageSource);
    mailService.setTemplateEngine(springTemplateEngine);
}

@Test
public void testSendEmail() throws Exception {
    mailService.sendEmail("nemanja@test.com", "testSubject", "testCont", false, false);
    verify(javaMailSender).send((MimeMessage) messageCaptor.capture());
    MimeMessage message = (MimeMessage) messageCaptor.getValue();
    assertThat(message.getSubject()).isEqualTo("testSubject");
    assertThat(message.getContent().toString()).isEqualTo("testCont");
    assertThat(message.getAllRecipients()[0].toString()).isEqualTo("nemanja@test.com");
    assertThat(message.getFrom()[0].toString()).isEqualTo("InstaTicket");
    assertThat(message.getContent().getClass()).isEqualTo(String.class);
    assertThat(message.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
}

完整的代碼可以在這里找到https://github.com/sansajn5/ISA-InstaTicketAPI ,我使用 yaml 作為屬性。另外我使用結構作為 Jhipster 生成的項目

通常,您不會加載Spring上下文文件,然后通過mailService = new MailService();在測試中實例化組件mailService = new MailService();

如果您正在編寫單元測試,請不要加載Spring上下文文件並模擬您要測試的組件的所有依賴項。

如果您正在編寫集成測試,請不要模擬依賴項,讓框架加載上下文並連接依賴項。

問題是這一行: mailService = new MailService() 刪除它。

用簡單的語言讓@Autowired注釋使用 SpringBoot 在 jUnit 中進行實例化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM