■ はじめに
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