Pergunta

Eu estou tentando integrar Dumbster para testar nossa JavaMail com base notificador de e-mails enviados.Os e-mails são enviados, mas no meu teste Dumbster não buscá-las.Eu não tenho certeza se eu precisar de configuração adicional para fazer esse trabalho buton o dumbster página inicial ele diz, ele irá ouvir automaticamente para e-mails enviados através de smtp na porta 25.

Este é o nosso java configuração do e-mail:

<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>

A nossa Mailer classe só injeta o 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);
    }

O teste é bastante simples, como demonstram em sua página:

@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);
}

Como eu disse, o email é enviado, mas a Asserção de falha.

Qualquer idéias?

BTW:Eu também tentei Greenmail mas com o mesmo resultado:

o maven ligeiramente diferente:

    <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>

O teste

    GreenMail greenMail = new GreenMail(); //uses test ports by default
    greenMail.start();
    // send mail
    Assert.assertEquals("subject", greenMail.getReceivedMessages()[0].getSubject());
    greenMail.stop();
Foi útil?

Solução

O teste falhar porque o config diz "Enviar o email para o servidor SMTP smtp.somewhere.com"mas você quer enviar para o SimpleSmtpServer que é executado no localhost

A utilização de um Sistema de propriedade para o host parâmetro da mailSender feijão e defini-lo para localhost quando você executa um teste.

O que disse, eu sugiro dividir o teste em dois.O primeiro teste deve apenas certificar-se de que o método é chamado com os parâmetros corretos.De que maneira você vai saber que o código tenta enviar mensagens de correio electrónico no tempo correto;há pouco ponto em testes de autenticação de SMTP, o servidor de correio, o correio de infra-estrutura e a rede em um teste de unidade - todos estes são testados por seus respectivos fabricantes.

Um segundo teste deve testar apenas o método sendMail() o método.Coloque esse teste em um conjunto de teste que pode ser executado manualmente.O que você quer saber aqui é se você configurar corretamente e usar o MailSender API.A menos que você altere o código na sendMail() método, você não precisa executar este teste.

Isto irá acelerar o seu teste de unidade e de se livrar de muitos desnecessários dependências que podem causar falhas no teste, mesmo que seu código funciona corretamente.

Outras dicas

Nota:Parece haver versões mais recentes do Dumbster (não disponível a partir da fonte original), que pode ter corrigido o jeito erros encontrados:

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=b0f7be4b0666dca22205e6df5c7374677daa416e

E Greenmail parece residir aqui esses dias:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top