13

アプリの JUnit テスト (robotium) を開始しようとしました。

public class MainTest extends ActivityInstrumentationTestCase2<MainActivity> {
    private Solo solo;

    public MainTest() {
        super("nix.android.contact", MainActivity.class);// TODO Auto-generated constructor stub
    }

    protected void setUp() throws Exception {
        super.setUp();
        solo = new Solo(getInstrumentation(), getActivity());
    }

    public void AddContact() {
        solo.assertCurrentActivity("main", MainActivity.class);
    }
}

マニフェスト

 <instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="nix.android.contact" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <uses-librar

y android:name="android.test.runner" />
    </application>

テストを実行しようとすると、コンソールに次のエラーが表示されます。

Test run failed: Test run failed to complete. Expected 1 tests, received 0

別のアプリ(非常に単純なアプリ)で別のテストを作成しようとしましたが、動作します。

4

8 に答える 8

5

引数なしのコンストラクターがなかったときに、この問題が発生しました。

public class MainActivityTest extends
    ActivityInstrumentationTestCase2<MainActivity_> {

public MainActivityTest() {
    super(MainActivity_.class);
}
...
于 2012-10-10T20:00:43.153 に答える
1

問題はあなたの電話にあります

super("nix.android.contact", MainActivity.class);

私のコードには

super("nix.android.contact", Class.forName("nix.android.contact.MainActivity"));

また、ActivityInstrumentationTestCase2のGenericに名前を付ける必要なしにこの方法で実行しました

public class TestApk extends ActivityInstrumentationTestCase2 {

    private static final String TARGET_PACKAGE_ID = "nix.android.contact";
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "nix.android.contact.MainActivity";

    private static Class<?> launcherActivityClass;
    static{
            try {
                    launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
            } catch (ClassNotFoundException e) {
                    throw new RuntimeException(e);
            }
    }

    @SuppressWarnings("unchecked")
    public TestApk() throws ClassNotFoundException {
            super(TARGET_PACKAGE_ID, launcherActivityClass);
    }
于 2012-07-24T22:14:12.993 に答える
0

テストのコンストラクターが依存するメソッドをプロガードしていないことを確認しますが、アプリケーションで何も使用していないことを確認してください。logcat は、アプリケーション パッケージにクラスまたはメソッドがないことを通知します。

ターゲット パッケージをアンインストールして、代替ビルドから残っていないことを確認してください (たとえば、Eclipse と一緒に Maven を使用している場合)。

于 2013-09-26T12:19:54.183 に答える
0

このエラーが発生したため、コンストラクター メソッドからパラメーターを削除して修正しました。Eclipse ウィザードによって次のように作成されました。

public OptionsActivityTest( String name ) {

テストを再び機能させるには、「文字列名」を削除する必要がありました。

于 2015-01-25T17:49:16.160 に答える
-1

同じエラーメッセージが表示されました。問題は、テスト メソッド名が「test」で始まる必要があることでした。

例: エラーが発生testMethod1()している間method1Test()は機能します。

于 2012-10-07T11:15:07.203 に答える