2012-08-11 54 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