我是测试的新手。当我开发我的应用程序时,我使用Robotium来测试我的应用程序,但现在,我想测试一些属于我的Util类成员的函数。例如:
public static boolean internetConnection(Context context) {
ConnectivityManager conMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo i = conMgr.getActiveNetworkInfo();
if (i == null)
return false;
else if (!i.isConnected())
return false;
else if (!i.isAvailable())
return false;
return true;
}
或者例如:
public static boolean isTabletDevice(Context context) {
if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb
// test screen size, use reflection because isLayoutSizeAtLeast is
// only available since 11
Configuration con = context.getResources().getConfiguration();
try {
Method mIsLayoutSizeAtLeast = con.getClass().getMethod(
"isLayoutSizeAtLeast", int.class);
Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con,
0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE
return r;
} catch (Exception x) {
x.printStackTrace();
return false;
}
}
return false;
}
我如何测试这些功能?
非常感谢!!
答案 0 :(得分:2)
对于第一个,你应该存根/模拟连接管理器。
模拟连接管理器可能产生的所有条件,并确保您的方法为每个条件返回正确的值。您可能只想返回值,而不是嵌套的else if
语句。 IMO使代码更清晰,更容易思考。
对于第二个我甚至不确定我是否会烦恼,因为您基本上确保Android调用适用于您提供的价值 - 您需要解释具体的内容你想测试。那反射有效吗?您是否以正确的尺寸调用它?