Как имитировать классы, которые сложно создать (javax.mail.Message)?

Я хочу использовать тесты 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 , получение значений, которые я определил в коде настройки теста?

  • Какой из макетов пакетов лучше всего подходит для такого рода задач?

Все ответы действительно приветствуются.

7
задан skaffman 22 May 2011 в 13:02
поделиться