Me encuentro con un problema relacionado con el uso de JUnit en entornos de subprocesos múltiples. El siguiente código debería fallar, pero en realidad pasa en eclipse.Problema extraño al utilizar JUnit en entornos de subprocesos múltiples
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);
}
}
}
Y here'a otra pieza de código, aquí utilizo Future.get() para esperar a tope de la rosca, en este caso, se producirá un error.
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();
}
}
busqué en Google y encontró que JUnit no puede manejar la unidad de pruebas de varias hebras, pero lo que es la diferencia entre estas dos piezas de código? Gracias
todo, hay una reemplazo de Junit en este caso? – zjffdu