Android 为预构建的apk编写JUnit功能测试

Android 为预构建的apk编写JUnit功能测试,android,dependencies,apk,Android,Dependencies,Apk,我对事物仍然比较生疏,我正在试图弄清楚是否有可能针对预构建的应用程序源编写JUnit功能测试。我找到了一种对应用程序重新签名的方法,但我想知道如何将其作为测试的依赖项包含在Eclipse项目中?是的,使用Java反射确实可以做到这一点 除此之外,您还需要退出要测试的应用程序。从您的设备下载它(例如,使用AppMonster应用程序),使用dedict.jar退出(http://www.troido.de/re-sign.jar)并使用adb再次安装 之后,一切都会好起来 @SuppressWar

我对事物仍然比较生疏,我正在试图弄清楚是否有可能针对预构建的应用程序源编写JUnit功能测试。我找到了一种对应用程序重新签名的方法,但我想知道如何将其作为测试的依赖项包含在Eclipse项目中?

是的,使用Java反射确实可以做到这一点

除此之外,您还需要退出要测试的应用程序。从您的设备下载它(例如,使用AppMonster应用程序),使用dedict.jar退出(http://www.troido.de/re-sign.jar)并使用adb再次安装

之后,一切都会好起来

@SuppressWarnings("rawtypes")
public class YourTestSuite extends ActivityInstrumentationTestCase2 {

    /** Package ID of the app under test. */
    private static final String TARGET_PACKAGE_ID = "com.something";

    /** ID of the app under test's main activity. */
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.something.HomeActivity";

    /** Launcher activity class. */
    private static Class<?> launcherActivityClass;

    /** Static code to find the activity class. */
    static {
        try {
            launcherActivityClass = Class
                .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
        }

        catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Constructor
     * 
     * @throws ClassNotFoundException
     */
    @SuppressWarnings("unchecked")
    public YourTestSuite() throws ClassNotFoundException {
        super(TARGET_PACKAGE_ID, launcherActivityClass);
    }

    /* Your test code comes here. */
}
@SuppressWarnings(“rawtypes”)
公共类YourTestSuite扩展了ActivityInstrumentationTestCase2{
/**正在测试的应用程序的包ID*/
私有静态最终字符串TARGET\u PACKAGE\u ID=“com.something”;
/**被测应用程序主要活动的ID*/
私有静态最终字符串启动器\u ACTIVITY\u FULL\u CLASSNAME=“com.something.HomeActivity”;
/**启动器活动类*/
私有静态类启动器ActivityClass;
/**用于查找活动类的静态代码*/
静止的{
试一试{
launcherActivityClass=类
.forName(启动器活动全名);
}
catch(classnotfounde异常){
抛出新的运行时异常(e);
}
}
/**
*建造师
* 
*@ClassNotFoundException
*/
@抑制警告(“未选中”)
public YourTestSuite()抛出ClassNotFoundException{
super(TARGET\u PACKAGE\u ID,launcherActivityClass);
}
/*你的测试代码在这里*/
}

看起来不错,但如何将apk作为测试的依赖项包含在Eclipse项目中?我是否将它从app重命名为zip并将其列为jar依赖项?在Eclipse中您不需要任何依赖项。只需在您的测试设备上安装apk,否则您的测试用例将无法在运行时加载正在测试的活动。您可以使用命令“adb install”在测试设备上安装apk。