2014-04-29 6 views
0

я этот тест блока, что общий тест не удается из-за исключениями, отбрасываются, хотя его expected:Тест терпит неудачу из-за исключениями брошенных

@Test(expected = AutoGenerateStringIdException.class) 
public void testPut_shouldThrowException(){ 
    RootEntity rootObject = new RootEntity(); 
    // Some codes here 
    try { 
     Key key = store.put(rootObject); 
    } catch(AutoGenerateStringIdException e){ 
     assertEquals(e.getMessage(), "Cannot auto-generate String @Id"); 
    } 
} 
+0

Я думаю, что исключение AutoGenerateStringIdException никогда не выбрасывается из этого теста, и именно поэтому он терпит неудачу. (потому что исключение выловлено) –

ответ

0

Если исключение, как ожидается, в тесте, вы не должны поймать Это. Просто удалите try/catch и посмотрите, что происходит.

+0

тест также не работает – xybrek

3

Вы можете либо иметь @Test(expected = SomeException.class), либо использовать try...catch, как вы это делаете. Вы не можете использовать оба из них одновременно.

Когда вы объявляете тест, ожидая, что какое-то исключение будет выброшено, и если вы поймаете его в рамках теста, его не будут бросать, не так ли?

Хотя я еще не пробовал, вы можете попробовать перебросить исключение из блока catch.

catch(AutoGenerateStringIdException e){ 
    assertEquals(e.getMessage(), "Cannot auto-generate String @Id"); 
    throw e; 
} 
+0

Да, повторное бросание исключения работает отлично. – jgitter

+0

Я удалил try-catch, но у меня возникли сбои в тестировании – xybrek

Смежные вопросы