作成されたエンティティがデータベースに正しく永続化されているかどうかをテストしたい。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);
}
}
休止状態を使用する場合、エンティティの作成をテストする必要がありますか?誰かがあなたに低レベルの休止状態をテストしようと書くことができますが、休止状態には独自のテストがあります。上記の些細なコードがありますが、同時により多くのエンティティを持続させる特定のコードを想像することができます(たとえば、1対多といくつかの1対1の関係)。そして、関係が正しく持続しているかどうかをテストしたいと思います。
この方法でテストするパターンはありますか?問題があります。そのレコードはデータベースにありません。返されたdtoを使用したくない(ルートエンティティの集合体のみを表示します-personですが、personの基本データ(1つ)、personのアドレス(1つ)などについては説明していません)...永続化されたレコードを取得します。