2017-01-31 106 views
0

У меня есть простой метод DAO, что я пытаюсь проверить:модульного тестирования метода DAO с помощью высмеивал диспетчер сущностей получить проблемы при тестировании Exception

public boolean insertUser (User user) throws DaoException { 
    boolean result = false; 

    try { 
     em.persist(user); 
     result = true; 
    } catch (Exception e) { 
     throw new DaoException(e); 
    } 

    return result; 
} 

, как сохраняются может вернуть исключение я хочу модульного тестирования этого случай:

Я дразнил менеджер сущности:

@Mock 
EntityManager mockEm; 

И мой тест:

@Test 
public void testExceptionEntityExistInsertUser() throws Exception { 
    System.out.println("entity already exist exception"); 
    boolean result; 
    when(mockEm.persist(user)).thenThrow(EntityExistsException.class); 
    result = userDao.insertUser(user); 
} 

Но на линии, когда (mockEm.persist (пользователь)). ThenThrow (EntityExistsException.class); У меня есть следующая ошибка: Тип 'void' не разрешен здесь

Я не понимаю, откуда взялась эта проблема.

ответ

0

Решение состоит в том, чтобы установить данные сущности не допускаются. Например, данные имеют нулевое значение, когда эти данные имеют тег @NotNull:

@Test 
public void testExceptionEntityExistInsertUser() throws Exception { 
    System.out.println("entity already exist exception"); 
    boolean result; 
    user.setData(null) // assuming data has a NotNull tag 
    result = userDao.insertUser(user); 
} 

Тогда тест будет генерировать исключение.

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

  • Нет связанных вопросов^_^