? 當(dāng)我們系統(tǒng)要用Junit 測(cè)試批量發(fā)郵件功能的時(shí)候,
既要測(cè)試 這功能是否正常。
但又不能真正意義上的把郵件發(fā)出去。
要不你在測(cè)試的時(shí)候 那么多垃圾郵件給用戶 用戶肯定要煩惱了。
問題解決:
在這里
http://quintanasoft.com/dumbster/? 有個(gè)專門 測(cè)試 發(fā)Email 開源類庫(kù)。
詳細(xì)說明點(diǎn)擊該網(wǎng)站查看。
一個(gè)示例
package?com.dumbster.mytest;

import?junit.framework.TestCase;

import?com.dumbster.smtp.*;

import?junit.framework.TestCase;
import?javax.mail.Session;
import?javax.mail.Message;
import?javax.mail.Transport;
import?javax.mail.MessagingException;
import?javax.mail.internet.MimeMessage;
import?javax.mail.internet.InternetAddress;
import?java.util.Properties;
import?java.util.Date;
import?java.util.Iterator;
import?java.util.*;


/**?*//**
?*?@author?junmy
?*
?*/


public?class?SmtpServerTest?extends?TestCase?
{
?????private?SimpleSmtpServer?server;
?????private?static?final?int?SMTP_PORT=1082;
????????public?SmtpServerTest(String?s)

????????
{
????????????super(s);
????????}
????????
????????protected?void?setUp()?throws?Exception

????????
{
????????????super.setUp();
????????
????????????server=SimpleSmtpServer.start(SMTP_PORT);
????????}
????????
????????protected?void?tearDown()?throws?Exception

????????
{
????????????super.tearDown();
????????????????server.stop();
????????}
????????
????????public?void?testSendBacthMail()

????????
{
??????????????String?From?=?"sender@here.com";
??????????????String?Subject?=?"Test";
??????????????String?body?=?"Test?Body";

????????????//TODO:
????????????//??dal.BacthMail()
????????????//得到后臺(tái)數(shù)據(jù)庫(kù)中所有用戶得email
??????????????
????????????List<String>?list=new?ArrayList<String>();
????
????????????//list=dal.BacthMail();
????????????Properties?mailProps?=?new?Properties();
????????????mailProps.setProperty("mail.smtp.host",?"localhost");
????????????mailProps.setProperty("mail.smtp.port",?""?+?SMTP_PORT);
????????????mailProps.setProperty("mail.smtp.sendpartial",?"true");
????????????Session?session?=?Session.getInstance(mailProps,?null);
????????????
????????????for(String?strto:list)

????????????
{
????????????????try

????????????????
{
??????????????????MimeMessage?msg?=?new?MimeMessage(session);
????????????????????msg.setFrom(new?InternetAddress(From));
????????????????????msg.setSubject(Subject);
????????????????????msg.setSentDate(new?Date());
????????????????????msg.setText(body);
????????????????????System.out.println("emailList:"+strto);
????????????????????msg.setRecipient(Message.RecipientType.TO,?new?InternetAddress(strto));
????????????????????Transport.send(msg);
????????????????}

????????????????catch?(MessagingException?e)?
{
????????????????????//?TODO?自動(dòng)生成?catch?塊
????????????????????e.printStackTrace();
????????????????????fail("Exception:"+e);
????????????????}????????
????????????}
????????????assertEquals(list.size(),?server.getReceivedEmailSize());
??????????
????????????Iterator?emailIter?=?server.getReceivedEmail();
????????????for(int?i=0;i<server.getReceivedEmailSize();i++)

????????????
{
????????????????SmtpMessage?email?=?(SmtpMessage)?emailIter.next();
????????????????assertEquals(body,email.getBody());
????????????????assertEquals(Subject,email.getHeaderValue("Subject"));
????????????????assertEquals(list.get(i),email.getHeaderValue("To"));
????????????}
????????????
????????????
????????}

????????


}

詳細(xì)說明請(qǐng)下載源代碼查閱
http://quintanasoft.com/dumbster/
? http://sourceforge.net/projects/dumbster
Dot Net 版本
?http://ndumbster.sourceforge.net/
dot net 下示例

Nunit Test Batch Email
?????SimpleSmtpServer?server;
????????public?BatchEmailTest()

????????
{
????????????server?=?null;
????????????server?=?SimpleSmtpServer.Start();
????????}

????????[Test]
????????public?void?TestBatchEmail()

????????
{
????????????ISiteUserService?iSiteUser?=?ServiceFactory.GetInstance().GetService(typeof(ISiteUserService))?as?ISiteUserService;
????????????Hashtable?hs?=?new?Hashtable();
????????????IList?mailList?=?iSiteUser.GetBatchEmailList(hs);
????????????SmtpMail.SmtpServer?=?"localhost";

????????????for?(int?i?=?0;?i?<?mailList.Count;?i++)

????????????
{
????????????????//send?mail
????????????????MailMessage?message?=?new?MailMessage();
????????????????message.Subject?=?"Subject";
????????????????message.Body?=?"Send?Body..";
????????????????message.From?=?"test@cwave.com";
????????????????message.To?=?mailList[i].ToString();
????????????????SmtpMail.Send(message);
????????????}

????????????Assert.AreEqual(mailList.Count,?server.ReceivedEmailCount);
????????????for?(int?j?=?0;?j?<?server.ReceivedEmailCount;?j++)

????????????
{
????????????????SmtpMessage?email?=?server.ReceivedEmail[j];
????????????????Assert.AreEqual("<test@cwave.com>",?email.Headers["From"]);
????????????????Assert.AreEqual("<"?+?mailList[j].ToString()?+?">",?email.Headers["To"]);
????????????????Assert.AreEqual("Subject",?email.Headers["Subject"]);
????????????????Assert.AreEqual("Send?Body..",?email.Body);
????????????}

??
????????}
????????[TestFixtureTearDown]
????????public?void?TearDown()

????????
{
????????????if?(server?!=?null)
????????????????server.Stop();
????????}

????}
希望對(duì)你有用!