diff --git a/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java b/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java index 9fae78043..279c35d70 100644 --- a/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java +++ b/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java @@ -1,17 +1,34 @@ package org.briarproject.bramble.test; +import org.junit.After; +import org.junit.Before; + import java.lang.Thread.UncaughtExceptionHandler; import static org.junit.Assert.fail; public abstract class BrambleTestCase { + private volatile boolean exceptionInBackgroundThread = false; + public BrambleTestCase() { // Ensure exceptions thrown on worker threads cause tests to fail UncaughtExceptionHandler fail = (thread, throwable) -> { throwable.printStackTrace(); - fail(); + exceptionInBackgroundThread = true; }; Thread.setDefaultUncaughtExceptionHandler(fail); } + + @Before + public void before() { + exceptionInBackgroundThread = false; + } + + @After + public void after() { + if (exceptionInBackgroundThread) { + fail("background thread has thrown an exception"); + } + } } diff --git a/bramble-api/src/test/java/org/briarproject/bramble/test/ThreadExceptionTest.java b/bramble-api/src/test/java/org/briarproject/bramble/test/ThreadExceptionTest.java index 6491df41a..184c057d8 100644 --- a/bramble-api/src/test/java/org/briarproject/bramble/test/ThreadExceptionTest.java +++ b/bramble-api/src/test/java/org/briarproject/bramble/test/ThreadExceptionTest.java @@ -12,7 +12,7 @@ public class ThreadExceptionTest extends BrambleTestCase { fail(); } - @Test(expected = AssertionError.class) + @Test public void testExceptionInThreadMakesTestCaseFail() { Thread t = new Thread(() -> { System.out.println("thread before exception"); @@ -24,7 +24,8 @@ public class ThreadExceptionTest extends BrambleTestCase { t.join(); System.out.println("joined thread"); } catch (InterruptedException e) { - e.printStackTrace(); + System.out.println("interrupted while joining thread"); + fail(); } }