1

Android用のJUnitテストをセットアップしようとしています.マニフェストなどをセットアップしていますが、このエラーが発生し続けます:

java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo {com.example.Android/android.test.InstrumentationTestRunner}: java.lang.ClassNotFoundException: android.test.InstrumentationTestRunner in loader dalvik.system.PathClassLoader[/data/app/com.example.Android-1.apk:/data/app/com.example.Android-1.apk]

テスト クラス:

  public class ConnectionToSiteTest extends AndroidTestCase{
    private final String emailUsername = "testUser@gmail.com";
    private final String password = "test";
    private final String features = "222222";
    private String commands;

    public void testCommandReturn(){
        requestToSite();

        assertEquals("222222", commands);
    }

    private void requestToSite(){
        try {
            // Create params for connection including 3sec timeout
            // on connection and 5sec timeout on socket
            HttpParams httpParams = new BasicHttpParams();
            int timeoutConnection = 3000;
            int timeoutSocket = 5000;

            // Set the timeouts
            HttpConnectionParams.setConnectionTimeout(httpParams,
                    timeoutConnection);
            HttpConnectionParams.setSoTimeout(httpParams, timeoutSocket);
            HttpClient httpClient = new DefaultHttpClient(httpParams);

            // Create the data entities
            HttpPost post = new HttpPost("http://example.com/AndroidCommands");
            HttpResponse response;

            // Set POST data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                    2);
            nameValuePairs.add(new BasicNameValuePair("emailUsername",
                    emailUsername));
            nameValuePairs.add(new BasicNameValuePair("password",
                    password));
            nameValuePairs.add(new BasicNameValuePair("features",
                    features));
            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Query the server and store the user's ID
            response = httpClient.execute(post);

            // Grabs the command string from response headers and processes them
            commands = (String) response.getHeaders("commands")[0].getValue();

        } catch (UnsupportedEncodingException e) {
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
        }
    }
}

AndroidManifest.xml:

<uses-library android:name="android.test.runner" />
<instrumentation android:name="android.test.InstrumentationTestRunner"
   android:targetPackage="edu.neumont.MillerK.Android" android:label="Tests for My App" />
<activity
        android:name="com.example.Android.ConnectionToSiteTest">            
    </activity>

テスト スイート クラス:

    public class AllTests extends TestSuite {
    public static Test suite() {
        return new TestSuiteBuilder(AllTests.class).includeAllPackagesUnderHere().build();
    }
}

どこかで修正された同じ例外を見つけようとしましたが、何も見つかりませんでした。

4

2 に答える 2

1

テストが適切なAndroidテストプロジェクトに含まれていることを確認しますか?プロジェクトを右クリックして->Androidツール->Androidテストプロジェクトを追加することで、Eclipseに追加できます。すべてのテストをそのプロジェクトに入れる必要があります。

于 2012-05-02T07:48:25.403 に答える
0

Eclipse がパッケージを正しくビルドしていない可能性があります。それが私に起こったとき、まったく同じエラーでした。調べてみると、簡単に解決策が見つかりました。私の場合、 YourProject->Properties->Buildersの下にAndroid Package Builderがありませんでした。もう一度追加するために、Eclipse の .project ファイルに数行 (ApkBuilder のもの) を追加しました。別の問題が発生する可能性がありますが、.project が次のようになっていることを確認してください。

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>xxx-it</name>
    <comment></comment>
    <projects>
        <project>xxx-project</project>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.ApkBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>
于 2013-02-18T00:00:08.337 に答える