51

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.

Screenshot: Screenshot

2
  • 2
    This one is really weird, did some testing myself, and this code runs fine (the test is successfull)... Commented Jul 20, 2009 at 0:22
  • I added a screenshot, just to show... I'd be doubtful too. Commented Jul 20, 2009 at 1:17

3 Answers 3

105

The problem is that your nnounceThreadTest 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.

Sign up to request clarification or add additional context in comments.

7 Comments

Thank you, this fixed it as advertised.
After removing the extends TestCase, I had to add the additional import to ensure I had the static assert methods. import static org.junit.Assert.*;
Awesome job at finding the solution hidden as a hint in a screenshot
Argggghhhh, I just spent an hour and a half on this issue without finding this answer. Thank you, thank you, thank you!
The screen shot is a broken link now so we can't see what the original class looked like. I found that if I renamed my class and my tests to no longer start with "test" that suddenly @Begin works and "expected" works too. Thanks Yishai!
|
5

Instead of removing extends TestCase , you can add this to run your test case with Junit4 which supports annotation.

@RunWith(JUnit4.class)

Comments

3

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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.