你会如何测试这些功能?

时间:2014-07-08 15:37:29

标签: android unit-testing testing robotium testability

我是测试的新手。当我开发我的应用程序时,我使用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;
}

我如何测试这些功能?

非常感谢!!

1 个答案:

答案 0 :(得分:2)

对于第一个,你应该存根/模拟连接管理器。

模拟连接管理器可能产生的所有条件,并确保您的方法为每个条件返回正确的值。您可能只想返回值,而不是嵌套的else if语句。 IMO使代码更清晰,更容易思考。

对于第二个我甚至不确定我是否会烦恼,因为您基本上确保Android调用适用于您提供的价值 - 您需要解释具体的内容你想测试。那反射有效吗?您是否以正确的尺寸调用它?