27

私は Android Studio 0.2.4 を使用していますが、この質問は一般的に IntelliJ に関連していると思います。私のテストは src/instrumentTest/java の下にあり、すべて AndroidTestCase を拡張します。すべてのテストを実行すると (たとえば、ソース フォルダーを右クリックして [実行...] をクリックすると)、テストは Android エミュレーターで Android テストとして正常に実行されます (実行/デバッグ構成の下に表示されます)。

しかし、単一のテスト メソッドまたはテスト クラスを同じ方法で実行しようとすると (メソッドを右クリックして [実行...] をクリックします)、テストはエミュレーターではなく通常の JUnit テストとして実行されますが、もちろん失敗します (以下のスタック トレース)。新しい実行構成を作成しようとしても、JUnit 構成以外のものを作成する方法がわかりません。

IDE から、テスト メソッドまたはテスト クラスを Android テストとして実行するにはどうすればよいですか?

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)
Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 3 more
4

2 に答える 2

35

まだフォローしている人にとっては、これは Android Studio 0.2.8 で動作します。ただし、注意する必要がある 3 つの状態があります。

  1. 以前にテスト メソッドまたはクラスを実行したことがない場合、保存された実行構成はありません。メソッドまたはクラスを右クリックすると、Run の横に右矢印が表示され、テストの名前が表示されます。Android の記号が付いているものを選択します。

  2. 以前にテスト メソッドまたはクラスを通常の JUnit テストとして実行したことがある場合、Android Studio はその構成を保存しており、コンテキスト メニューの [実行] の下に右矢印やオプションはありません。その場合、ファイル メニューで [実行] -> [構成の編集...] に移動し、JUnit セクションでテストを見つけて削除します。次に、状態 (1) になる必要があります。

  3. 以前にテスト メソッドまたはクラスを Android テストとして実行したことがある場合、Android Studio はその構成を保存しており、コンテキスト メニューの [実行] の下に右矢印やオプションはありません。[実行] を選択するだけで動作するはずです。

于 2013-09-12T18:45:52.323 に答える
2

Android Studio でテスト コードを正しく設定しましたか? Android Studio での Gradle の最新の規則は、テスト ディレクトリを ' androidTest ' と呼ぶことです。次に、build.gradle ファイルに以下を追加する必要があります。

    androidTest.setRoot('androidTest')
    androidTest.java.srcDirs = ['androidTest/java']

次に、任意のテスト クラスを個別に右クリックして実行できます。

編集: これらの手順は、エスプレッソ テスト専用です。

于 2014-05-14T17:28:18.527 に答える