0

セットのサイズが 0 ではないことをアサートする junit テストを作成しています。

public interface Phone {

public Set<PhoneSample> getPhone();
public void setPhone<Set<PhoneSample> phone>
}

public class DefaultPhone implements Phone{
private Set<PhoneSample> phone;
@Override
   public Set<PhoneSample> getPhone() {
      return phone;
   }
}
   @Override
   public void setPhone(Set<PhoneSample> phone) {
      this.phone = phone;
   }
}
public class Test{
@Test
   public void testOrder10() throws Exception {
      Phone input = new DefaultPhone();

      int size = input.phone.getLength(); ///DOESNT WORK
      assertThat(size, is > 0);

   }
}

私は最終的にサイズを取得し、それがゼロより大きいことを確認したいと考えています。

これに関する 2 番目の質問は、テスト クラスからセット内の getPhone() メソッドにアクセスする方法です。セットにさらにメソッドを追加すると、セット内からこれらのメソッドのそれぞれにどのようにアクセスするのでしょうか。

4

2 に答える 2

1
int size = input.phone.getLength(); ///DOESNT WORK

次のようにする必要があります。

int size = input.getPhone().size();
于 2013-10-09T14:51:02.933 に答える
0

クラスのメンバーを公開してテストするのではなくPhone、Phone インターフェースに直接問い合わせる必要があります。たとえば、次の方法でテストできるように size() メソッドを実装します。

int size = input.size();

Phoneそれ以外の場合は、オブジェクトの実装を公開しているだけです。ここでデメテルの法則を調査し、おそらく適用して、Phone オブジェクトにできる限り多くのことをさせたいと思います。

于 2013-10-09T14:53:47.517 に答える