Ho una classe ExampleThread che implementa l'interfaccia Runnable.Come testare una classe che implementa Runnable
public class ExampleThread implements Runnable {
private int myVar;
public ExampleThread(int var) {
this.myVar = var;
}
@Override
public void run() {
if (this.myVar < 0) {
throw new IllegalArgumentException("Number less than Zero");
} else {
System.out.println("Number is " + this.myVar);
}
}
}
Come posso scrivere test JUnit per questa classe. Ho provato come sotto
public class ExampleThreadTest {
@Test(expected = IllegalArgumentException.class)
public void shouldThrowIllegalArgumentExceptionForInvalidNumber() {
ExampleThread exThread = new ExampleThread(-1);
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(exThread);
}
}
ma questo non funziona. C'è un modo per testare questa classe per coprire tutto il codice?
Test di thread non è così facile, ma in questo caso, vorrei semplicemente testare il metodo di esecuzione chiamandolo direttamente (senza ExecutorService). Se è davvero necessario testare System.out, è possibile impostarlo su qualcos'altro e quindi controllare il contenuto. –