1

インストルメンテーション テストを正常に開始しABD shellます。

adb shell am instrument de.manayv.lotto.test/android.support.test.runner.AndroidJUnitRunner

コンピューターに接続されていないデバイスでこれらのテストを実行するには、次のコードを使用して、アプリ (ターゲット アプリでもテスト アプリでもない) からこれらのテストを実行しようとします。

    String packageName = "de.manayv.lotto.noonlinegambling";

    final List<InstrumentationInfo> list = getPackageManager().queryInstrumentation(
                                                                            packageName, 0);
    if  (list.isEmpty()) {
        Toast.makeText(this, "Cannot find instrumentation for " + packageName,
                       Toast.LENGTH_SHORT).show();
        return;
    }

    final InstrumentationInfo instrumentationInfo = list.get(0);
    final ComponentName componentName = new ComponentName(instrumentationInfo.packageName,
                                                          instrumentationInfo.name);

    if (!startInstrumentation(componentName, null, null)) {
        Toast.makeText(this, "Cannot run instrumentation for " + packageName,
                       Toast.LENGTH_SHORT).show();
    }

デバッグにより、次の正しい値が取得されます。

  instrumentationInfo.packageName = de.manayv.lotto.test
  instrumentationInfo.name = android.support.test.runner.AndroidJUnitRunner

startInstrumentation()true を返しますが、テストは実行されません。何か案は?

4

1 に答える 1

3

問題が見つかりました。これは、startInstrumentation() の 2 番目の null パラメーターです。コードを次のように変更しました。

...
Bundle arguments = new Bundle();
arguments.putString("class", "de.manayv.lotto.espresso.BalanceComputationTest");

if (!startInstrumentation(componentName, null, arguments)) {
    Toast.makeText(this, "Cannot run instrumentation for " + packageName,
                   Toast.LENGTH_SHORT).show();
}

(Java) パッケージに含まれるすべてのテストを実行するには、代わりに次を使用します。

arguments.putString("package", "de.manayv.lotto.espresso");
于 2015-06-12T08:02:40.210 に答える