以下是我用来描述单元测试方法的(过度)简化代码示例。
CompanyDataSet.xml
<dataset>
<company company_key="100" company_name="OldName" />
</dataset>
CompanyDaoTest.java
@Test
public void testUpdateCompany() {
CompanyDao companyDao = new CompanyDao();
IDatabaseConnection dbConn = createConnection();
IDataSet dataSet = createDataSet("CompanyDataSet.xml");
DatabaseOperation.CLEAN_INSERT.execute(dbConn, dataSet);
companyDao.updateCompany(100, "NewName");
// What is a good way to assert updated company data ?
}
我想到了两种验证公司数据的方法。 创建另一个预期数据集作为数据源。 另一个XML。
<dataset>
<company company_key="100" company_name="NewName" />
</dataset>
Java中的断言部分
IDataSet actual = dbConn.createDataSet(new String[]{"company"});
IDataSet expected = createDataSet("CompanyDataSet_expected.xml");
Assertion.assertEquals(expected, actual);
只需通过DAO加载公司对象,然后比较属性即可。
你应该明白了。
我的问题
第一种方法很容易编写,但我必须为每种不同的更新方法创建另一个XML文件。创建这么多数据集XML文件听起来并不是一个好主意。
第二种方法很直接,但当有不同的更新方法时,测试类将充满了断言不同属性具有不同值的方法。如果加载方法出现问题,许多测试将会失败。
有没有一种好的方法来断言数据?是否有可能避免我刚才描述的问题(或者这真的无关紧要)?
更新
由于没有人回答这个问题,我决定接受自己的答案。