Я хочу протестировать простой метод отправки электронной почты с помощью smtp.gmail.com.Человек, который отправляет электронную почту и пароль, устанавливается в application.properties и используется с помощью аннотации @Value.Как я могу написать тест Junit для такого метода?
Я пробовал использовать поддельные smtp и зеленую почту.Но я не понимаю, как это работает и как они реализуются.Я использую Gradle.Я включил поддельную smtp в build.gradle, но не знаю, как изменить местоположение, куда будет отправляться электронное письмо.
Это мой тестовый класс Junit:
import static org.junit.Assert.*;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import org.junit.Test;
import com.Email.EmailServiceApplication;
public class EmailServiceTest {
@Test
public void test() throws AddressException, MessagingException {
EmailServiceApplication esa = new EmailServiceApplication();
assertEquals(esa.sendEmail("abhi", 1), "Email sent successfully");
}
}
Этомой метод:
private void sendmail(EmailMessage emailmessage, int ver) throws AddressException, MessagingException {
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
// get session for email
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
if(ver == 1) {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(username, false));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(emailmessage.getTo_address()));
msg.setSubject("Job uploaded");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("job has been uploaded successfully!");
Multipart multipart = new MimeMultipart();
// Set text message part
multipart.addBodyPart(messageBodyPart);
// Send the complete message parts
msg.setContent(multipart);
msg.setSentDate(new Date());
// Send
Transport.send(msg);
}
}