私の質問は、多くのインターフェイスを実装するクラスをテストすることです。たとえば、私はこのクラスを持っています:クラスが多くのインターフェイスを実装していることをどのようにテストできますか?
public class ServiceControllerImpl extends ServiceController implements IDataChanged, IEventChanged {
}
これで2つのテスト方法があります。最初は具体的なクラスで直接テストしています。つまり、オブジェクトタイプはインターフェイスではなく具象クラスです。
public class ServiceControllerImplTest {
ServiceControllerImpl instance;
@Before
public void setUp() {
instance = new ServiceControllerImpl();
// you can bring this instance anywhere
}
}
第2の方法は、インターフェイスでのテストのみです。このオブジェクトを実装するすべてのインターフェイスにこのオブジェクトを型キャストする必要があります。
public class ServiceControllerImplTest {
ServiceController instance; // use interface here
IDataChanged dataChangeListener;
@Before
public void setUp() {
instance = new ServiceControllerImpl();
dataChangeListener = (IDataChanged) instance;
// instance and dataChangeListener "look like" two different object.
}
}
多分将来的に我々はそれが他のオブジェクトに実装インターフェイスを変更することができますので、具体的なクラスを使用すると、将来的には失敗のテストにつながる可能性があるので、私は第二の溶液を好みます。私はこの問題のベストプラクティスを知らない。
感謝:)
ええ、インターフェイスの種類をテストするインターフェイスをテストします。だから、2番目のソリューションは基本的には行く方法です。 – JayC667
私は上記のコメントが答えを与えると確信していますが、あなたの質問は少し明確にする必要があります。 'dataChangeListener =(IDataChanged)dataChangeListener;を書いたとき、あなたは' dataChangeListener =(IDataChanged)instance;を意味しました。 –
@DaveSchweisguthはい。私は編集しました。本当にありがとう。 – hqt