+11  A: 

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.

Yishai
Thank you, this fixed it as advertised.
Ben S
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.*;
burtlo
Awesome job at finding the solution hidden as a hint in a screenshot
matt b
A: 

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.

duffymo