Я хочу использовать тесты junit в моем следующем проекте, но я не уверен, какой из нескольких макетов пакетов мне следует использовать. Я также прочитал несколько руководств, но не нашел информации, как решить конкретную проблему, описанную ниже. Возможно, эта функция недоступна в проверенных мной пакетах.
Вот проблема: я хочу написать класс фильтра электронной почты, который выполняет итерацию по List
и фильтрует сообщения электронной почты по теме, дате, от, до и т. Д. Код для тестирования выглядит следующим образом:
public List<Message> doFilter(List<Message> messageList) {
List<Message> newList = new ArrayList<Message>(messageList.size());
try {
for (Message message: messageList) {
if (start != null) {
Date sentDate = message.getSentDate();
if (sentDate == null || sentDate.before(start))
continue;
}
if (end != null) {
Date receivedDate = message.getReceivedDate();
if (receivedDate == null || receivedDate.after(end))
continue;
}
newList.add(message);
}
}
catch(Exception e) {
e.printStackTrace();
}
return newList;
}
Итак, очевидный тестовый пример - создать Список
с несколькими сообщениями и проверьте, содержит ли новый список, возвращаемый фильтром, правильные сообщения.
Но javax.mail.Message
является абстрактным и не может быть создан напрямую. Для этого мне нужно будет создать реальное хранилище электронной почты, включая имя учетной записи и пароль.
Итак, мои вопросы:
Как мне издеваться над несколькими объектами javax.mail.Message
с помощью разные значения, чтобы мой класс фильтра мог вызывать message.getSentDate ()
и другие методы Message
, получение значений, которые я определил в коде настройки теста?
Какой из макетов пакетов лучше всего подходит для такого рода задач?
Все ответы действительно приветствуются.