的決定,也將在需要時注入的構造方法的類的可能性。當你使用這種方法時,你可以很容易地在接口後面嘲笑這個類,並且可以用模擬來創建測試。
作爲例如一些僞代碼:
你Utility
類:
public class Utility implements IUtility {
@Override
public void add() { ... }
@Override
public void remove() { ... }
}
你Utility
使用類:
public class UtilityUsingClass {
private IUtility utility;
public UtilityUsingClass(IUtility utility) {
this.utility = utility;
}
public void myMethod() {
// Use Utility class
utility.add();
...
}
}
在測試中它可以是這樣的:
@Test
public void testMyMethod() {
UtilityUsingClass testClass = new UtilityUsingClass(new UtilityMock());
testClass.myMethod();
// assert stuff
}
的UtilityMock
:
public class UtilityMock implements IUtility {
@Override
public void add() { // Implements mock logic ... }
@Override
public void remove() { // Implements mock logic ... }
}
什麼,我會建議是調用工具做你的工作,然後創建您的活動的回調方法對結果做出反應,你的實用方法不應該知道的UI元素 –
@SarthakMittal謝謝。但是我有興趣知道什麼幫助你做出這個決定,而不是使用一個基本活動,移動那裏的方法並通過使用這個方法的任何活動繼承這個類? – RmK
我通常保留繼承過程作爲最後的手段,因爲我們只能擴展一個類,如果只有一些類會使用該方法,最好使用接口,但是,如果您的所有活動都需要這些方法,那麼它是正常的創建基類 –