を確認することができます。私は、この例では、すなわち、SomeDao
をその依存関係を制御することができますので、私はdoSomethingComplicatedWithListsInAForLoop
を操作かを把握することができます唯一の理由がある
interface SomeDao {
void add(SomeObject object);
void update(SomeObject object);
void delete(SomeObject object);
}
class SomeDaoStub implements SomeDao {
@Override public void add(SomeObject object) {}
@Override public void update(SomeObject object) {}
@Override public void delete(SomeObject object) {}
}
class SomeObject {
private final boolean isNew;
private final boolean isUpdated;
private final boolean isDeleted;
SomeObject(boolean isNew, boolean isUpdated, boolean isDeleted) {
this.isNew = isNew;
this.isUpdated = isUpdated;
this.isDeleted = isDeleted;
}
public boolean isNew() {
return isNew;
}
public boolean isUpdated() {
return isUpdated;
}
public boolean isDeleted() {
return isDeleted;
}
}
public void doSomethingComplicatedWithListsInAForLoop(Iterable<SomeObject> someObjects, SomeDao dao) {
for (SomeObject someObject : someObjects) {
if (someObject.isNew()) {
dao.add(someObject);
} else if (someObject.isUpdated()) {
dao.update(someObject);
} else if (someObject.isDeleted()) {
dao.delete(someObject);
}
}
}
@Test
public void itDeletesObjectsMarkedToBeDeleted() {
final List<SomeObject> actualDeletedObjects = new ArrayList<>();
List<SomeObject> expectedDeletedObjects = Arrays.asList(
new SomeObject(false, false, true),
new SomeObject(false, false, true),
new SomeObject(false, false, true)
);
SomeDao theDao = new SomeDaoStub() {
@Override
public void delete(SomeObject object) {
actualDeletedObjects.add(object);
}
};
doSomethingComplicatedWithListsInAForLoop(expectedDeletedObjects, theDao);
assertEquals(expectedDeletedObjects, actualDeletedObjects);
}
:ここ
があることを示す一例です。
にはを挿入できない状態を呼び出すため、テストするのが難しい可能性があります。
リストの長さを確認して、リストが更新されているかどうか確認することができます –
テストできないとはどういう意味ですか?ユニットテストはできませんか?私はあなたの問題を理解していません。 – zubergu
はい私はそれを単体テストすることはできません、またはそれを完全に単体テストすることはできません。たとえば、コードをgetInsert()のように変更した場合、getUpdate()getDelete()を使用すると、より良いテストができます。もちろん、私は3回ループする必要があります。これを行うのがよいかどうか、あるいはこれを行うべきかどうかを理解したいだけです。 –