伙计,我是Android测试的新手。
我想知道是否可以在JUnit
测试中测试以下方法?
或在没有运行模拟器的情况下测试这种特定于Android的其他最佳实践。
public class NetworkUtils {
private final Context context;
public NetworkUtils(Context context) {
this.context = context;
}
/**
* Indicates whether network connectivity exists and it is possible to establish
* connections and pass data.
*
* @return flags indicate the network connectivity ready or not to make connection.
*/
public boolean hasNetworkConnection() {
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
答案 0 :(得分:0)
您可以尝试使用Robolectric
来模拟/存根Android API以进行单元测试,但是老实说,我会怀疑这是否是您应该尝试验证的逻辑在单元测试中。
之所以这么说,是因为该方法中的所有内容都是特定于Android框架的,为什么还要负责测试Android框架代码?
我认为,您应该尝试将这样的Android功能与您自己的业务逻辑(您可以控制的东西)分开,并简单地模拟期望成功或失败的响应。这意味着您无需直接测试此方法,而只需测试其效果(即whenNoNetworkConnection_thenSomethingHappens
和whenNetworkConnection_thenSomethingElseHappens
)。
为此,我建议使用Mockito
库。