2013-10-05 5 views
0

У меня проблема с моим Dao-Test:Spring Dao-Test 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

Вы правы. с Transactional он работает. Большое спасибо. Просто для интереса, для чего @TransactionConfiguration? –

+0

Чтобы указать, как Spring должна обрабатывать транзакции транзакционных тестов: какой TxManager использовать, нужно ли откатывать или совершать транзакции. –

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

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