Question

j'essaie d'intégrer Bête pour tester notre notificateur basé sur JavaMail pour les e-mails sortants.Les e-mails sont envoyés mais lors de mon test, Dumbster ne les récupère pas.Je ne sais pas si j'ai besoin d'une configuration supplémentaire pour que cela fonctionne, mais sur la page d'accueil stupide, il est indiqué qu'il écoutera automatiquement le courrier envoyé via SMTP sur le port 25.

Voici notre configuration de messagerie Java :

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.somewhere.com" />
    <property name="port" value="25" />
    <property name="username" value="theUserName" />
    <property name="password" value="thePassword" />

    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
        </props>
    </property>
</bean>

Notre classe Mailer injecte simplement le JavaMailer :

@Component
public class OurMailer {

    @Inject
    private MailSender mailSender;

    public void sendMail(String from, String to, String subject, String msg) {

        SimpleMailMessage message = new SimpleMailMessage();

        message.setFrom(from);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(msg);
        mailSender.send(message);
    }

Le test est assez simple comme ils le démontrent sur leur page :

@Inject
private OurMailer ourMailer;

@Test
public void ourMailer_should_send_mail() {
    SimpleSmtpServer server = SimpleSmtpServer.start();
    ourMailer.sendMail(FROM_EMAIL, TO_EMAIL, SUBJECT, MESSAGE);
    server.stop();
    Assert.assertTrue(server.getReceivedEmailSize() == 1);
}

Comme je l'ai dit, le courrier est envoyé mais l'Assert échoue.

Des idées?

D'AILLEURS:J'ai aussi essayé Greenmail mais avec le même résultat :

maven légèrement différent :

    <dependency>
        <groupId>com.icegreen</groupId>
        <artifactId>greenmail</artifactId>
        <version>1.3.1b</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Le test

    GreenMail greenMail = new GreenMail(); //uses test ports by default
    greenMail.start();
    // send mail
    Assert.assertEquals("subject", greenMail.getReceivedMessages()[0].getSubject());
    greenMail.stop();
Était-ce utile?

La solution

Le test échoue car la configuration indique "Envoyer le courrier au serveur SMTP smtp.somewhere.com" mais vous voulez l'envoyer au SimpleSmtpServer qui tourne sur localhost

Utilisez une propriété système pour le host paramètre du mailSender haricot et réglez-le sur localhost lorsque vous exécutez un test.

Cela dit, je suggère de diviser le test en deux.Le premier test doit simplement s'assurer que la méthode est appelée avec les paramètres corrects.De cette façon, vous saurez que le code essaie d’envoyer les mails au bon moment ;il ne sert à rien de tester l'authentification SMTP, votre serveur de messagerie, l'infrastructure de messagerie et le réseau dans un test unitaire - tous ces éléments sont testés par leurs fabricants respectifs.

Un deuxième test devrait tester uniquement la méthode sendMail() méthode.Mettez ce test dans une suite de tests qui peut être exécutée manuellement.Ce que vous voulez savoir ici, c'est si vous configurez et utilisez correctement le MailSender API.Sauf si vous changez le code dans le sendMail() méthode, vous n’êtes pas du tout obligé d’exécuter ce test.

Cela accélérera votre test unitaire et éliminera de nombreuses dépendances inutiles qui peuvent entraîner l'échec du test même si votre code fonctionne correctement.

Autres conseils

Remarque: il semble y avoir de nouvelles versions de Dumbster (non disponibles à partir de la source d'origine) pouvant avoir corrigé les erreurs de suspension que vous avez rencontrées:

sourceforge.net/p/dumbster/patches/9 /

https://github.com/rjo1970/DumbSter

git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=commit ;h=b0f7be4b0666DC7374677DAA416E

et Greenmail semble résider ici de nos jours:

https://github.com/greenmail-mail-test/greenmail <

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top