2012-08-11 55 views
2

使用Android和設備上的測試,我用它來檢查,如果無線網絡連接連接:如何在JUNIT中模擬WiFi連接?

 ConnectivityManager manager = (ConnectivityManager) MyApplication.getMyApplication().getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    return info.isConnectedOrConnecting(); 

效果很好。有沒有辦法嘲笑JUnit?

Thanx提前, 馬庫斯

回答

0

,如果你的代碼移植到自己的WifiServiceClass您可以模擬這個功能,讓你的應用程序依賴於界面上:

public class MyClassThatRequiresWifi { 
    private IWifiService wifiService; 
    public MyClassThatRequiresWifi(IWifiService wifiService) { 
     this.wifiService = wifiService; 
    } 

    public void someMethodThatNeedsWifi() { 
     if (this.wifiService.isConnectedOrConnecting()) 
      ... 
    } 
} 

public IWifiService { 
    boolean isConnectedOrConnecting(); 
} 

public WifiService implements IWifiService { 
    boolean isConnectedOrConnecting() {..} 
} 
+0

,但是那不是意味着引入一個目前爲止不需要的類僅用於測試目的?從更廣泛的角度來看,這似乎並不正確? – 2012-08-11 07:47:14

+0

我同意你必須寫一個額外的類和一個額外的接口。這比嘲笑android-s native本身的ConnectivityManager要容易得多。 Service類與「分離」應用程序分爲gui-,business-和database-layer一樣「(不 - 必要)」。我不認爲有一個更簡單的方法來嘲笑無線網絡。 – k3b 2012-08-11 08:00:04