我想测试创建的实体是否已正确持久化到数据库。create 方法有一个服务集成测试:
@SpringApplicationContext({"setting ...."})
public class PersonServiceIntegrationTest extends UnitilsJUnit4 {
@SpringBeanByName
private PersonService personService;
@Test
public void createPerson() {
String name = "Name";
String sname = "Surename";
DtoPerson item = personService.createPerson(name, sname, Arrays.asList( new DtoAddress("Pisek","CZE", true), new DtoAddress("Strakonice", "CZE", false) );
Assert.notNull("Cannot be null", item);
/*
* This assertion fails because of transaction (I suppose) - item is not in
* database right now.
* Why? Returned dto 'item; is not null?
*/
//domain with all fetched related entities, eg. address
Person p = personService.getPerson(item.getIdPerson());
List<Address> addresses = p.getAddresses();
Assert.notNull("Cannot be null", p);
Assert.notNull("Cannot be null", addresses);//return collection of Address
Assert.notFalse("Cannot be emtpty", addresses.isEmpty());
ReflectionAssert.assertPropertyLeniens("City", Arrays.asList("Pisek", "Strakonice"), addresses);
}
}
如果我使用休眠,是否有必要测试创建实体?有人可以写你尝试测试低级休眠但休眠有自己的测试。上面有一个简单的代码,但我可以想象一些特定的代码同时保留更多的实体(例如,一对多加上几个一对一的关系)。我想测试关系是否得到了正确的维持。
有没有一种模式可以以这种方式进行测试?我有一个问题,该记录不在数据库中。我不想使用返回的 dto (它只呈现聚合根实体 - 人,但它没有说明人员基本数据(一对多)、人员地址(一对多)等)......我想获取持久记录。