JUnit expected tag not working as expected
-
18-09-2019 - |
Question
I have the following test case in eclipse, using JUnit 4 which is refusing to pass. What could be wrong?
@Test(expected = IllegalArgumentException.class)
public void testIAE() {
throw new IllegalArgumentException();
}
This exact testcase came about when trying to test my own code with the expected tag didn't work. I wanted to see if JUnit would pass the most basic test. It didn't.
I've also tested with custom exceptions as expected without luck.
Solution
The problem is that your AnnounceThreadTest extends TestCase. Because it extends TestCase, the JUnit Runner is treating it as a JUnit 3.8 test, and the test is running because it starts with the word test, hiding the fact that the @Test annotiation is in fact not being used at all.
To fix this, remove the "extends TestCase" from the class definition.
OTHER TIPS
Instead of removing extends TestCase , you can add this to run your test case with Junit4 which supports annotation.
@RunWith(JUnit4.class)
Just ran this in IntelliJ using JUnit 4.4:
@Test(expected = IllegalArgumentException.class)
public void testExpected()
{
throw new IllegalArgumentException();
}
Passes perfectly.
Rebuild your entire project and try again. There's something else that you're doing wrong. JUnit 4.4 is working as advertised.