Я предполагаю, что вы используете Javamail, и проблема в том, что javax.mail.Session
является окончательным и, следовательно, не может быть поддельным.
Похоже, другие предложили вам просто определить свой собственный интерфейс "почтового сеанса" и создать реализацию, которая использует Javamail. В своих тестах вы просто внедряете макет, а в «режиме реального мира» вы внедряете реализацию Javamail.
JMock и EasyMock будут поддерживать все утверждения, которые вы, возможно, захотите сделать в сообщении, которое вы отправляете, и ваше тестирование завершено.
Кроме того, я обычно стараюсь избегать любых внепроцессных вызовов из модульных тестов - это убивает вас, когда вы часто запускаете набор тестов, что обычно приводит к тому, что он выполняется меньше, и это вызывает проблемы с кодом начало происходить.