我的問題是關於測試一個實現了很多接口的類。例如,我有這個類:我們如何測試一個類實現了很多接口?
public class ServiceControllerImpl extends ServiceController implements IDataChanged, IEventChanged {
}
現在有兩種測試方法。首先是對具體課程直接進行測試。這意味着對象類型是具體類而不是接口。
public class ServiceControllerImplTest {
ServiceControllerImpl instance;
@Before
public void setUp() {
instance = new ServiceControllerImpl();
// you can bring this instance anywhere
}
}
第二種方法是僅在接口上進行測試。我們必須將此對象轉換爲它實現的所有接口。
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.
}
}
我傾向於第二種方案,因爲也許在將來,我們可以改變它實現了與其他對象的接口,因此,使用具體類可能會導致在未來的測試失敗。我不知道這個問題的最佳做法。
謝謝:)
對於測試您在接口類型上測試的接口。所以你的第二個解決方案基本上就是要走的路。 – JayC667
我確定上面的評論給出了答案,但你的問題需要澄清一點。當你寫'dataChangeListener =(IDataChanged)dataChangeListener;'你的意思是'dataChangeListener =(IDataChanged)實例;',對吧? –
@DaveSchweisguth是的。我編輯過。非常感謝。 – hqt