понедельник, 30 мая 2016 г.

Напоминалка: ссылка на статическое поле в jаvadoc

Чтобы каждый раз заново не вспоминать, как ссылаться на статическое поле(константу) в javadoc-е:

/**
*  Ссылка на описание внешней константы {@link ru.pevgen.test.Consts#MY_CONST} в документации
**/

четверг, 5 мая 2016 г.

GreenMail - простая библиотека для unit-тестирования получения/приёма email в java (spring)

Собственно по теме, чтобы не забыть :  http://www.icegreen.com/greenmail/

Представляет из себя простой почтовый сервер (с разными протоколами  - pop,smtp,imap), который может быть внедрён в код и использован для простого тестирования кода, связанного с посылкой/приёмом email-ов.

Пример конфигурации и работы в тестовой spring-конфигурации

Фактически тут просто в тестовой конфигурации подменяется mail-сервер, на greenmail. А у самого greenmail-объекта есть методы для проверки того, что на него посылалось.
 
https://stackoverflow.com/questions/9661907/testing-greenmail-without-installing-a-smtp-server/9663399#9663399


import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.GreenMailUtil;
import com.icegreen.greenmail.util.ServerSetupTest; ...

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("ApplicationContext-Greenmail.xml")
public class EmailServiceIntegrationTest {

    /** Class under test */
    @Resource
    private EmailService emailService;

    private GreenMail greenMail;

    @Before
    public void startMailServer() {
        greenMail = new GreenMail(ServerSetupTest.SMTP);
        greenMail.start();
    }

    @After
    public void stopMailServer() {
        greenMail.stop();
    }

    @Test
    public void testPledgeReminder()
                throws InterruptedException, MessagingException {

        String mailText = "Hallo World";
        String mailSubject = "Hallo";
        String mailTo = "test@excaple.com";

        /** when: sending a mail */
        emailService.send(mailSubject, mailTo, mailText);

        assertTrue(greenMail.waitForIncomingEmail(5000, 1));
        Message[] messages = greenMail.getReceivedMessages();
        assertEquals(1, messages.length);
        assertEquals(mailText, messages[0].getSubject());       
        String body = GreenMailUtil.getBody(messages[0]).replaceAll("=\r?\n", "");
        assertEquals(mailText, body);       
    }

}
important: use port 3025
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="javaMailProperties">
        <util:properties>
            <prop key="mail.debug">false</prop>
            <prop key="mail.transport.protocol">smtp</prop>
            <prop key="mail.smtp.port">3025</prop>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.user">test@mail.extern</prop>
            <prop key="mail.smtp.host">localhost</prop>
            <prop key="mail.smtp.from">test@mail.extern</prop>
        </util:properties>
    </property>
    <property name="username" value="test"/>
    <property name="password" value="xxx"/>
    <property name="defaultEncoding" value="utf8" />
</bean>
Then this configuration will configure a Spring JavaMailSender to send its mails to the GreenMail-Server started and finished by the test code.