I use Powermock to mock static class and test send email, but have an error: The class javax.mail.Session not prepared for test
I do like all: use PrepareForTest and @RunWith(PowerMockRunner.class), but it isn't help. My test is:
@RunWith(PowerMockRunner.class)
@PrepareForTest(value = {MailingServiceImpl.class,Transport.class, Session.class})
@PowerMockRunnerDelegate(MockitoJUnitRunner.class)
@ContextConfiguration(classes = {MailingServiceImpl.class, TestMailingConfig.class,Transport.class, Session.class})
public class MailServiceTest {
@Autowired
private MailingService mailingService;
@Autowired
private MailingProperties mailingProperties;
@TestConfiguration
public static class TestMailingConfig {
@Bean
@Primary
public MailingProperties mailingProperties() {
MailingProperties mailingProperties = mock(MailingProperties.class);
SmtpProperties smtpProperties = TestUtil.getSmtpProperties();
MailingUser mailingUser = TestUtil.getMailingUser();
when(mailingProperties.getSmtpProperties()).thenReturn(smtpProperties);
when(mailingProperties.getMailingUser()).thenReturn(mailingUser);
return mailingProperties;
}
}
@Test
void sendMailOk() throws MessagingException {
Message message = TestUtil.getMessage();
Session session = mock(Session.class);
PowerMockito.mockStatic(Session.class);
given(Session.getInstance(any(Properties.class), any(Authenticator.class))).willReturn(session);
PowerMockito.mockStatic(Transport.class);
MimeMessage mimeMessage = mock(MimeMessage.class);
MimeMessageHelper mimeMessageHelper = spy(new MimeMessageHelper(mimeMessage,true));
when(mimeMessageHelper.getMimeMessage()).thenReturn(mimeMessage);
boolean result = mailingService.send(message);
Assertions.assertEquals(true, result);
PowerMockito.verifyStatic(Transport.class);
Transport.send(mimeMessage);
}
}
I have java 14 and my gradle contains this:
plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
testImplementation(
'org.springframework.boot:spring-boot-starter-test',
'org.powermock:powermock-module-junit4:2.0.7',
'org.powermock:powermock-api-mockito2:2.0.7',
'org.mockito:mockito-inline:3.4.0'
)
Aucun commentaire:
Enregistrer un commentaire