У меня есть модульный тест для компонента Seam, который должен завершиться неудачей, если значение не предоставлено в контексте до создания компонента поддержки. Я смог проверить это вручную, но хотел бы покрыть этот сценарий модульным тестом.
Я в основном получаю org.jboss.seam.InstantiationException
, вызванное java.lang.IllegalArgumentException
, когда Seam пытается создать компонент поддержки. Это хорошо, и это то, что я ожидал бы случиться. Проблема заключается в том, что когда я пишу модульный тест, я не могу ни поставить try / catch вокруг new FacesRequest(..) {}.run();
, ни использовать аннотацию Ожидаемые исключения. В обоих случаях исключение не перехватывается и вызывает сбой теста. Я предполагаю, что это из-за фильтра исключений Seam, но я не знаю достаточно о фильтре, чтобы знать, какой правильный шаблон для проверки этого ..
Мой код с аннотацией выглядит примерно так:
// 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();
}