【JUnit】【Mail】 Email送信に関する単体試験について ~ Dumbster編 ~

■ はじめに

https://blogs.yahoo.co.jp/dk521123/36230453.html
でメール送信機能を作ったが、単体試験をするのを調べてみた

JUnitメールテストライブラリ

[1] Dumbster
[2] SubEthaMail

今回は、「[1] Dumbster」を扱う。
「[2] SubEthaMail」については、以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/37475028.html

■ Dumbster

 * すごい簡単そう
https://github.com/kirviq/dumbster

ダウンロード先

http://sourceforge.net/projects/dumbster

設定手順

[1] 上記の「ダウンロード先」からZIPファイル「」をダウンロードして、解凍する
[2] dumbsterX.X.jar(今回は、「dumbster1.6.jar」)をインポートする
だけ

■ サンプル

import com.dumbster.smtp.SimpleSmtpServer;
import com.dumbster.smtp.SmtpMessage;

public void testSend() {
    SimpleSmtpServer server = SimpleSmtpServer.start();

    try {
      // Submits an email using javamail to the email server listening on port 25 
      // (method not shown here). Replace this with a call to your app logic.
      EmailHandler email = new EmailHandler();
      email.setFromAddress("sample@yahoo.com");
      email.addToAddress("to.sample@gmail.com");
      email.addCcAddress("cc.sample@gmail.com");
      email.addBccAddress("bcc.sample@gmail.com");
      email.setMailSubject("test title");
      email.setMailBody("Test body");
      email.setOnDebugMode(true);
      email.send();
    } catch(Exception e) {
      e.printStackTrace();
      fail("Unexpected exception: "+e);
    }

    server.stop();

    assertTrue(server.getReceivedEmailSize() == 1);
    Iterator emailIter = server.getReceivedEmail();
    SmtpMessage email = (SmtpMessage)emailIter.next();
    assertTrue(email.getHeaderValue("Subject").equals("test title"));
    assertTrue(email.getBody().equals("Test body"));	
}

■ 補足

【1】APIについて

 * javadocは以下。
http://quintanasoft.com/dumbster/javadoc/index.html
SmtpMessage.getHeaderNames()
SmtpMessage email = (SmtpMessage) emailIter.next();
Iterator headerNames = email.getHeaderNames();
while (headerNames.hasNext()) {
  String headerName = (String) headerNames.next();
  System.out.println(headerName);
}
出力結果
Cc
From
To
Message-ID
Content-Transfer-Encoding
Date
Subject
MIME-Version
Content-Type

関連記事

Email送信に関する単体試験について ~ SubEthaMail編 ~

https://blogs.yahoo.co.jp/dk521123/37475028.html

Java で、 Email を送るには... [1] ~ JavaMail / テキストメール編 ~

http://blogs.yahoo.co.jp/dk521123/36230453.html

Linuxでの開発用SMTPサーバー [1] ~ FakeSMTP編 ~

https://blogs.yahoo.co.jp/dk521123/36252946.html

Linuxでの開発用SMTPサーバー [2] ~ MailCatcher編 ~

https://blogs.yahoo.co.jp/dk521123/37440819.html