2
私はプロジェクトにspring、hibernate、およびmavenを使用しています。JUnitテスト、トランザクションに関連するエラー
私は一つのクラスこのクラスの
@Service
public class ServiceImpl implements Service ,Serializable{
//Code
}
の下に私は1つの方法は、私はこの方法のJUnitテストを行う
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW, readOnly = false)
public void doSomething(Obj a, Obj b){
//code
}
、下図のように宣言していたていました。
@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
}
上記1を呼び出すために1つのより多くのメソッドを宣言します。 なぜこれがエラーなしで機能しているのか尋ねたいだけです。