Я использую Spring, Hibernate и Maven для проекта.
У меня был один класс ниже
@Service
public class ServiceImpl implements Service ,Serializable{
//Code
}
в этом классе у меня был один метод, описанный ниже,
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW, readOnly = false)
public void doSomething(Obj a, Obj b){
//code
}
Я выполняю тест JUnit этого метода.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:com/mt/sm/application-context.xml", "classpath:com/mt/sm/security-context.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class ServiceImplTest {
@Test
public void testdoSomething() {
//code
}
}
Я получил эту ошибку ниже
Testcase: testdoSomething(com.mt.sm.services.ServiceImplTest): Caused an ERROR
Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly
Но таким же образом я объявляю еще один метод для вызова выше
public void call (Obj a, Obj b) {
doSomething(a,b);
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW, readOnly = false)
public void doSomething(Obj a, Obj b){
//code
}
для результата, я могу запустить тест.
Я просто хочу спросить, почему это работает без ошибок.