Ho riscontrato un problema estenuante quando si utilizza JUnit in ambiente multi-thread. Il seguente codice dovrebbe fallire, ma in realtà passa in eclissi.Problema strano che utilizza JUnit nell'ambiente multi-thread
public class ExampleTest extends TestCase {
private ExecutorService executor = Executors.newFixedThreadPool(10);
private volatile boolean isDone = false;
public void test() throws InterruptedException, ExecutionException {
executor.submit(new Runnable() {
@Override
public void run() {
try {
fail();
} finally {
isDone = true;
}
}
});
while (!isDone) {
Thread.sleep(1000);
}
}
}
E here'a un altro pezzo di codice, qui io uso Future.get() per attendere per l'arresto del filo, in questo caso fallirà.
public class ExampleTest extends TestCase {
private ExecutorService executor = Executors.newFixedThreadPool(10);
private volatile boolean isDone = false;
public void test() throws InterruptedException, ExecutionException {
Future future=executor.submit(new Runnable() {
@Override
public void run() {
try {
fail();
} finally {
isDone = true;
}
}
});
future.get();
}
}
ho cercato con Google e ha scoperto che JUnit non è in grado di gestire più thread unit test, ma ciò che è la differenza tra questi due pezzi di codice? Grazie
Quindi v'è alcuna sostituzione per Junit in questo caso? – zjffdu