私は可能な限り明確にしようとしています。編集を躊躇しないでください。オブジェクトのコレクションからのコレクション属性のテストコンテンツ
私の問題は、私は、この構造体の内容をテストし、Bオブジェクトのよりspecialyな内容と、それは特定のA値に対応することを保証したいということです。
public class A {
String key;
List<B> bs;
}
そして、私のデータは、このフォームを持っている
List<A> as = [
{
key : "KEY1",
bs: [
{val1:"val1", val2:"val2}
]
},
{
key : "KEY2",
bs: [
{val1:"val3", val2:"val4"},
{val1:"val5", val2:"val6"}
]
},
];
ユニットテストのコンテキストでは、私はこの構造をテストして、Bのリストを取得することなく、この構造をテストできるようにしたいと考えています。この構造をテストすることで、 KEY2の2つのBと、最初のBのval3とval4、第2のval5およびval6。
現時点では、キーでマップを作成してすべてのエントリをテストする必要があります。私はそれがあればもっと簡単な方法でそれを望みます。
ここは私の実際のテストです。
List<A> as = captor.getAllValues();
assertThat(as)
.isNotNull()
.hasSize(2)
.extracting("key")
.containsOnlyOnce(
tuple("KEY1"),
tuple("KEY2")
);
Map<String, A> estimationParPlateforme = indexBy(as, new Indexer<String, A>() {
@Override
public String apply(A a) {
return a.getKey();
}
});
assertThat(as.get("KEY1").getBs())
.isNotEmpty()
.extracting(
"val1",
"val2"
)
.containsExactly(
tuple(
"val1",
"val2"
)
);
assertThat(as.get("KEY2").getBs())
.isNotEmpty()
.extracting(
"val1",
"val2"
)
.containsExactly(
tuple(
"val3",
"val4"
),
tuple(
"val5",
"val6"
)
);
これはテストに少し時間がかかると思いますが、これを改善する方法を探しています。何か解決策はありますか?
ありがとうございました
'assertThat(as).extraction(" bs ")' etc? –