Ho un test di comunicazione su un socket TCP in cui prevedo che il server non risponda entro un intervallo di tempo impostato quando invio un determinato messaggio.Test JUnit per un timeout previsto
Il comportamento del server è nulla che possa controllare.
So caldo per fallire un test se non è stato completato entro un periodo di tempo prestabilito. Ma come posso fare il contrario, farlo passare per non completarlo entro i tempi?
Posso usare @Test (timeout=1000)
per fare fallire un test se non completo entro un secondo.
Ma, utilizzando Junit 4, esiste una funzione per verificare un timeout previsto come risultato positivo? Cioè Il test fallirà se completato entro il periodo di tempo e passerà se no?
Vuol il timeout gettare un'eccezione? Se lo fa, puoi provare per quell'eccezione di timeout. – Compass
Stai attento a questo, non penso che tu possa "aspettarti" l'eccezione generata da "timeout". È possibile utilizzare un timer o semplicemente controllare l'ora dell'operazione quindi, se è il momento desiderato, generare un'eccezione che si aspetta. Non sembra molto efficiente però. – Zircon
Inoltre, qual è esattamente lo scopo del test? Se esce dall'ambito del tuo codice a valle del server, non sono sicuro di quanto sia utile testare sul tuo terminale. Se ti aspetti che il tuo codice gestisca il timeout, devi semplicemente prendere in giro il socket e restituire l'eccezione. – Compass