0

サーブレットから AVD を実行/起動したい。私はクラスを持っています、

class A extends ActivityInstrumentationTestCase2{ 

    // all the relevant function for launching the ADV and execution of test steps in android app.

}

Android JUnit Test として実行すると、このクラスは正常に動作します。しかし、サーブレットからこのクラスを呼び出し/実行したいです。

Like : 私はサーブレットを持っています。

B extends HttpServlet {

    doPost() {
        A obj = new A();
        obj.somemethod()  which launch the ADV or open the application.
    }
}  

しかし、サーブレットから実行すると例外が発生しました

java.lang.NoClassDefFoundError: android/test/ActivityInstrumentationTestCase2
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
                                                                                         org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
com.web.evernote.ui.bean.ExecuteTestCases.doPost(ExecuteTestCases.java:83)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

誰でもこれで私を助けることができますか....

基本的には、advを実行してから、メモ帳のようなアクティビティを開いてテストを実行したい....

4

1 に答える 1

0

ADB コマンドを使用してエミュレータを起動したい場合があります。 somemethod() 関数では、次のようなものが必要です。

strCommand.append(ADB_PATH + "adb -s "+simulatorName+" shell am instrument ");;
strCommand.append("-w ");
strCommand.append(instrumentationPath); 
try
{
    p = Runtime.getRuntime().exec(strCommand.toString());
    p.waitFor();
}
catch(Exception e)
{
    e.printStackTrace();
}

上記の例では、エミュレーターでテスト ケースを開始します。ここで、strCommand は StringBuilder のインスタンスです。ADB_PATH は adb パスを格納する変数です。エミュレータを起動するコマンドを変更する必要があります。このようなもの

adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld.

于 2013-07-30T11:14:35.460 に答える