I've been bit a few times by Java assert
statements that didn't fail in the JUnit test suite because assertions weren't enabled in JUnit's JVM instance. To be clear, these are "black box" assertions inside implementations (checking invariants, etc) not the assertions defined by the JUnit tests themselves. Of course, I'd like to catch any such assertion failures in the test suite.
The obvious solution is to be really careful to use -enableassertions
whenever I run JUnit, but I'd prefer a more robust solution. One alternative is to add the following test to every test class:
@Test(expected=AssertionError.class)
public void testAssertionsEnabled() {
assert(false);
}
Is there a more automatic way to accomplish this? A system-wide configuration option to JUnit? A dynamic call I could put in the setUp()
method?
In Eclipse you can go to Windows
→ Preferences
→ Java
→ JUnit
, which has an option to add -ea
everytime a new launch configuration is created. It adds the -ea
option to the Debug Configuration as well.
The full text next to a check box is
Add '-ea' to VM arguments when creating a new JUnit launch configuration