2011-05-25 15 views
6

Estoy escribiendo pruebas de JUnit y me gustaría tener un destinatario de correo electrónico de Outlook que siempre tendrá éxito y uno diferente que siempre rebotará como no entregado.Outlook Recipient test: always succeed/always bounce

Para "siempre tener éxito", creo que el equivalente SMTP de NUL: sería útil.

(No quiero utilizar mi dirección de correo electrónico real por dos razones: 1) No quiero recibir un correo electrónico de prueba cada vez que alguien ejecuta el banco de pruebas y 2) No quiero que comiencen las pruebas de regresión fallar si mi empleador decide eliminar mi posición y dirección de correo electrónico.)

Para el "rebote siempre", supongo que podría usar [email protected], pero estaría abierto a una técnica más confiable que no se rompería si el Sr. Nut se uniera a MyCompany.

Junto con "siempre rebote", agradecería cualquier idea sobre cómo y dónde buscar los mensajes del "Sistema no entregado". ¿Debo usar una cuenta de correo electrónico de prueba? ¿O tal vez un marco de burla para burlarse del mensaje de rebote?


EDIT: Según http://www.oracle.com/technetwork/java/faq-135477.html#bounce, el mensaje de devolución ha sido estandarizada pero no implementado ampliamente. La validación de la dirección de correo electrónico es independiente de JavaMail. Así es como respondería las preguntas en el último párrafo. Una cuenta de correo electrónico de prueba puede tardar un tiempo antes de recibir el mensaje, y no quiero bloquear un mensaje que no se garantiza que se entregue. Burlarse puede tener más sentido.

+0

@Bryanbcook ha publicado una excelente respuesta sobre el uso de simulacros. Este parece ser el camino correcto para los rebotes. ¿Alguna idea sobre una dirección para enviar que siempre tendrá éxito? – rajah9

Respuesta

2

El uso de simulaciones para validar la lógica de procesamiento de las respuestas es definitivamente el camino a seguir. Las pruebas de forma aislada solo pueden llegar tan lejos: eventualmente tendrá que escribir algún tipo de prueba de integración que se comunique en la red a un servidor de correo para validar las suposiciones que hizo para las pruebas unitarias.

En el pasado, tuve que hacer girar una máquina virtual con un servidor de correo electrónico de desarrollo interno. Este servidor de correo no se conecta a Internet directamente, pero si es necesario, se enruta a través del servidor de correo de la compañía.

Tener su propio controlador de dominio/servidor de correo le proporciona a usted, el desarrollador, un mayor control sobre las características que normalmente no se permitirían a través de la red corporativa.

En cuanto a la gestión de diferentes tipos de respuestas, tuve un proyecto en el que necesitábamos probar diferentes tipos de respuestas para invitaciones a reuniones. Configuramos las reglas del lado del servidor para diferentes direcciones de correo electrónico para que cierto sujeto o cuerpo diseñado respondiera automáticamente con aceptación, rechazo, etc. Una regla del lado del servidor es simple de configurar: simplemente inicie sesión como ese usuario (aquí es donde el el controlador de dominio falso es útil) abre Outlook y configura una regla. Se pueden configurar reglas más complejas como parte de un Exchange "Event Sink".

Sin embargo, como se sugirió anteriormente, debe esforzarse por separar el procesamiento de la respuesta de la acción de envío. De esta manera, puede probar el procesamiento sin la sobrecarga del entorno.

+0

Uso de simulacros del segundo bryanbcook, y recomiendo usar http://mockito.org/ –

+0

@bryanbcook, gracias por la edición y el enlace a Exchange "Event Sink". Creo que eso me ayudará a cambiar la tubería SMTP. – rajah9

Cuestiones relacionadas