Pregunta

Mi programa tiene una rutina diaria, similar a un evento despertador. Decir, cuando es 14:00 (La hora es la hora del sistema en mi PC), hacer algo por mí.

Lo que quiero hacer es acelerar el período de prueba (que realmente no quiero esperar 4 días mirando a la rutina diaria y comprobar los errores.) He leído en wiki de Mock objeto , el escritor DID programa despertador de mención. Yo estaba tan feliz de ver pero aún así, no sé cómo hacerlo.

Soy nuevo en objeto de burla, y estoy programando en Java. Así JMock o EasyMock (o cualquier similar) podría bien para mí.

Gracias

¿Fue útil?

Solución

Siempre que necesite para obtener la hora actual, no utilice el reloj del sistema directamente - utilizar una interfaz como por ejemplo:

public interface Clock
{
    long currentMillis();
}

A continuación, puede aplicar esto con un reloj de sistema para la producción, y pasar de una falsificación de pruebas, donde se puede establecer el falso a la hora que usted desee.

Sin embargo, también hay que burlarse cabo lo que está impulsando su sistema -? A qué esperas explícitamente por un tiempo determinado, o hace algo más llame a su código

Otros consejos

Tengo que pedir disculpas desde lo solicitado sobre Java y estoy a comer cuando se trata de java, pero una solución es burlarse del objeto DateTime y configurarlo durante el tiempo deseado.

En .NET se vería algo como esto:

public static class SystemTime
{
    public static Func<DateTime> Now = () => DateTime.Now;
}

SystemTime.Now = () => new DateTime(2000,1,1);

De: Tratar con Tiempo en Análisis


  

... [A] programa de reloj de alarma n que provoca una   campana para que suene a una hora determinada podría   obtener la hora actual desde el exterior   mundo. Para probar esto, la prueba debe   esperar hasta la hora de alarma para saber   si se ha tocado el timbre   correctamente. Si un objeto mock se utiliza en   lugar del objeto real, que puede ser   programado para proporcionar la campana de timbre   tiempo (si es realmente ese momento   o no) para que el reloj de alarma   programa se puede probar en aislamiento.

Esta alarma del reloj que está haciendo referencia es dar un ejemplo de burlarse de un objeto. En realidad no es un objeto que puede utilizar en el marco de burla.

Básicamente lo que se hace en la prueba es falso los eventos del reloj. Exactamente cómo depende un poco en el diseño y la forma en que usted está esperando para el evento, pero que sea sencillo (si no puro) mi enfoque sería contar con un método que se llama cuando se activa el evento de tiempo, y luego probar ambos lados de ello.

En primer lugar es para probar la llamada al método y al ver que el evento programado hace lo que esperas. Entonces burlarse de esa clase (con JMock la forma preferida es que sea una interfaz y que su método de llamada implementar esa interfaz).

A continuación, pasa la maqueta a la clase que se encarga de la sincronización. Aquí de nuevo, sin abstraer la rosca / desencadenan problemas (como comprobar el reloj del sistema e iniciar el hilo) y tienen burla de los valores que se ejecutan esencialmente el caso de inmediato regresar.

A continuación, mantener el código real que realmente lee el reloj del sistema e inicia el hilo lo más pequeño posible, y que será la zona que no está bajo prueba unitaria.

El imitar se refiere a la unidad de pruebas. Para la funcionalidad que usted está describiendo yo separaría el gatillo (en su caso el evento despertador) del proceso (lo que es su 'rutina diaria' está haciendo) y la prueba de la unidad de la funcionalidad de los procesos.

A continuación, dirigir su atención al código de programación que invocará la funcionalidad de su proceso. Yo recomiendo usar algo así como cuarzo para esto, pero si usted va a rol de su -propio de la unidad de prueba para que pueda trabajar con el reloj del sistema real proporcionada se asigna el tiempo de disparo en función del valor actual del reloj del sistema como todo lo que pondrá a prueba para decir que se produce el evento de disparo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top