I've got a unit test for a Seam component that should fail if a value isn't provided in the context before the backing bean is created. I've been able to test this manually but would like to cover this scenario with a unit test.
I'm basically getting a org.jboss.seam.InstantiationException caused by a java.lang.IllegalArgumentException when Seam tries to create the backing bean. This is good and is what I'd expect to happen. The problem is that when I write the unit test, I can neither put a try/catch around the new FacesRequest(..) {}.run(); or use the expectedExceptions annotation. In both cases, the exception is not caught and causes the test to fail. I assume this is because of Seam's exception filter but I don't know enough about the filter to know what the correct pattern to test this..
My code with the annotation looks something like this:
// also tried IlligalArgumentException here
@Test( enabled = true, expectedExceptions = InstantiationException.class )
public void noDataTest() throws Exception
{
    login( USERNAME );
    // the stack trace says that the test fails on the next line.
    // this is expected.
    new FacesRequest( "/blah/blah/show.xhtml" ) {
        @Override
        protected void updateModelValues() {
        }
        @Override
        protected void invokeApplication()
        {
            // we should never get here
            // i'll put an failure here eventually
        }
    }.run();
}