6

Android Studio で Robolectric を使用して単体テストを実行しようとしています。私はほとんどそこにいます - 私は見る:

!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!
    at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5)
    at junit.textui.TestRunner.<init>(TestRunner.java:54)
    at junit.textui.TestRunner.<init>(TestRunner.java:48)
    at junit.textui.TestRunner.<init>(TestRunner.java:41)
    at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:185)
    ...

クラスパスに必要な依存関係もすべて表示されます。このエラーを修正するには、junit4 依存関係を Android SDK 依存関係の前に配置する必要があります。残念ながら、プロジェクト構造セクションにモジュールが表示されず、これをアーカイブするためにimlファイルを編集する方法がわかりません。

これが私のプロジェクト構造のスクリーンショットです: ここに画像の説明を入力

私のgradleファイル:

sourceSets {
   testLocal {
      java.srcDir file('src/test/java')
      resources.srcDir file('src/test/resources')
   }
}

dependencies {
    // compatibility
    compile 'android.compatibility:android-support:v4-r13'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'

    testLocalCompile 'junit:junit:4.11'
    testLocalCompile 'org.robolectric:robolectric:2.2'
    testLocalCompile 'org.easytesting:fest-assert-core:2.0M10'
}

android {
    buildToolsVersion "17"
    compileSdkVersion 18

    productFlavors {
       testLocal{
       }
    }
}

そして、AS でtestLocalフレーバーを選択しました。

4

3 に答える 3

4

Android Studio 0.5.7 では、「プロジェクト構造」ダイアログを使用するか、セクションandroidTestCompile 'junit:junit:4.+'の上部に行を配置するだけで、依存関係の順序を維持できdependenciesます。

ただし、これは Android Studio 内でテストを実行するには十分ではありません。新しいエラーは次のとおりです。

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116)
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:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3 more

したがって、私のjunit依存関係がjunit runに伝播されていないようです。さらに活躍できるように頑張ります

于 2014-04-28T15:02:26.920 に答える
-1

Android Studio には、IntelliJ のような依存関係画面はありません。Googleが修正するまで、私が思いついた回避策があります。これについては、こちらのブログ投稿で読むことができます。お役に立てれば。

于 2013-12-02T13:03:21.477 に答える