我有一個db單元測試的問題,它測試數據是否正確保存。因此,我用我的數據創建了一個樣本數據庫,並試圖比較設置和預期數據。該ID生成和其他一切應該由休眠DBUnit測試比較失敗
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class })
@DatabaseTearDown("empty.xml")
public class UserDaoTests {
@Autowired
UserAdminDao userDao;
@Test
@DatabaseSetup("db-setup.xml")
@ExpectedDatabase("db-expected.xml")
public void testPersistUser(){
User user = new User();
user.setUserId("user2");
user.setName("test2");
user.setEmail("[email protected]");
user.setLocked(false);
user.setEnabled(true);
user.setVersion(0);
user.setPassword("asdfasdf");
userDao.persist(user);
}
}
進行管理,我的設置是:
<dataset>
<user id="1" userId="user1" name="test1" email="[email protected]" locked="0" enabled="1" version="0" password="asdfasdf" />
</dataset>
,並與用戶ID = 2的下面一樣:
<user id="2" userId="user2" name="test2" email="[email protected]" locked="0" enabled="1" version="0" password="asdfasdf" />
但我m得到一個比較錯誤:
junit.framework.ComparisonFailure: row count (table=user) expected:<[2]> but was:<[1]>
不知道我的錯誤在哪裏。 THX對於任何幫助:)
但據我所知它'@ DatabaseSetup'表示測試前的db狀態,'@ ExpectedDatabase'表示測試後的狀態。爲什麼在測試中不能有db中的用戶呢?在我堅持另一個(user2)之後,應該有2個,還是我出錯了? – vicR
您是否已經確認您的堅持方法在您的測試之外工作?如果它不ComparisonFailure聽起來邏輯... –
我的'@ Transactional' DAO方法和dbunit似乎有問題。我添加了'TransactionDbUnitTestExecutionListener.class',但我認爲'@ ExpectedDatabase'在事務之後被調用。 – vicR