2013-10-05 2 views
0

를 작동하지 내 다오 테스트에 문제가있어 :봄 다오 테스트 defaultRollback

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"/cmn-dao-spring.xml"}) 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) 
public class ScoreDaoTest extends TestCase { 

@Autowired 
private ScoreDao mScoreDao; 

@Autowired 
private ScoreCreator mScoreCreator; 

@Autowired 
private QuestionCreator mQuestionCreator; 

@Override 
protected void setUp() throws Exception { 
    super.setUp(); 
} 

@Test 
public void testLoadAllScore() throws Exception { 
    List<Score> lAllScore = mScoreDao.loadAllScore(0, 0); 
    Assert.assertTrue(lAllScore.isEmpty()); 
} 

@Test 
public void testSaveScore() throws Exception { 
    Question question = mQuestionCreator.createQuestion(49954854L, new Date(), "Wer bist Du?", "Jörg", "Anja", "Stefan", "Willi", 3, true, false, 1, "DE", "DE_QZ"); 
    Assert.assertNotNull(question); 
    mScoreDao.saveScore(mScoreCreator.createScore(-1L, null, "Stefan", 1033, 27, "Wuhuuuu", question)); 
    List<Score> lAllScore = mScoreDao.loadAllScore(0, 1); 
    Assert.assertFalse(lAllScore.isEmpty()); 
} 

} 

내가 데이터를 영구적으로 저장 내 테스트 클래스를 실행할 때마다. 그러나 나는 나의 시험 과목을 위해 그것을 원하지 않는다.

문제가 표시되지 않습니다.

답변

1

테스트는 트랜잭션이 아니므로 Spring은 롤백 할 트랜잭션이 없습니다.

@Transactional을 테스트 메소드 (또는 모든 테스트 메소드가 트랜잭션이되도록하려면 테스트 클래스)에 추가하십시오.

+0

당신 말이 맞습니다. 트랜잭션과 함께 작동합니다. 정말 고마워. @TransactionConfiguration은 무엇을 위해서입니까? –

+0

Spring이 트랜잭션 테스트의 트랜잭션을 처리하는 방법을 지정하려면 : TxManager를 사용하려면 롤백하거나 커밋해야합니다. –