Я хочу написать модульный тест для метода службы, который аннотируется @Transactional и имеет вызовы уровня Dao, который создает запросы на основе критериев гибернации. При выполнении теста я получаю следующее исключение, связанное с транзакцией.
org.springframework.transaction.CannotCreateTransactionException
Caused by: javax.persistence.PersistenceException
Caused by: org.hibernate.exception.JDBCConnectionException
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
Caused by: java.net.ConnectException
Тестовый класс и метод обслуживания:
//Service class method
@Transactional(readOnly=true)
public List<Object> fetchSomeData() {
sampleDao.fetchSomeData();
//light weight processing code
//return processed list
}
//Test class
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
@ActiveProfiles
public class ServiceTest {
@Autowired
private Service service;
@MockBean
private SampleDao sampleDao;
@Test
public void serviceTest() {
when(sampleDao.fetchSomeData()).thenReturn(new ArrayList<Object>());
List<Object> result = service.fetchSomeData();
//Assert processed data returned
}
}
Как это исправить?