2013-08-19 12 views
8

RobolectricをAndroidスタジオで使用したいと思っていますが、この[question] [2]への回答を確認した上で[gradle-android-test-plugin] [1]しかし、運がない。gradle-android-test-pluginの使い方

  1. 私は新しいAndroidプロジェクトを作成し、MyAppという名前を付けました。
  2. 私はREADMEの "Usage"セクションのすべての指示に従いました。
  3. 私はまだ私の新しいプロジェクトでテストする任意のコードを持っていなかったので、私は
gradle-android-test-plugin/example/src/test/java/com/example 

から( `RobolectricGradleTestRunner`含む)のクラスをコピーして

gradle-android-test-plugin/example/src/main/java/com/example 

新しいMyAppプロジェクト内の対応するファイルパスにコピーします。

私は以前にAndroidの単体テストを実装したことはありません。私は次に何をすべきか分かりません。私は正常にプラグインのルートディレクトリに./gradlew installを実行しましたが、私の新しいプロジェクトのルートディレクトリで同じことを行うと何も成就しません。これは、この苦情をスロー:私は全くのGradle自体の教科書を読んでの非常に短い、Gradleのに慣れていないよ

Task 'install' is ambiguous in root project 'MyApp'. Candidates are: 'installDebug', 'installTest'. 

、私はこの問題を解決するかどうかはわかりません。

私はAndroidManifest.xmlを含むMyAppのディレクトリを入力し、テストをビルドして実行する../gradlew clean checkをしようとすると、私はこのエラーを取得:

Could not determine the dependencies of task ':MyApp:testDebug'. 

Androidのメーカーが私を見つけるすべての問題を持っていないようです依存関係。誰かが私のテストを実行する方向で私を指摘できますか?私はそれがプラグインのREADMEに言及されていない単純なターミナルコマンドか何かを想像しています。乾杯!

編集:

は、ここに私のbuild.gradleです。私はそれがプラグインに含まれているサンプルプロジェクトのものと構造的に同じではないことを認識していますが、その構造は私に同じエラーを与えました。

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
     classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.+' 
    } 
} 

apply plugin: 'android' 
apply plugin: 'android-test' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 18 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:18.0.0' 

    testCompile 'junit:junit:4.11' 
    testCompile 'org.robolectric:robolectric:2.1.+' 
    testCompile 'com.squareup:fest-android:1.0.+' 
} 

EDIT2:(ラビンドラの答えに示すように)私は、私はまた、(ジェイクさんのコメントが指摘するように)のGradleの私のバージョンが新しすぎた実現するために失敗した間違ったコマンドを発行しているという事実に加えて 。メインプロジェクトフォルダプラグインのコードからテスト

gradle tests 
+7

は、RE: ':MyAppに:testDebug' タスクの依存関係を判断できませんでした。 Gradle 1.7はまだサポートされていません。 –

+1

...これは、ラッパーが1.6を使用する方法です:http://www.gradle.org/docs/current/userguide/gradle_wrapper.html、次にgradleラッパー(NOT ./gradlewラッパー)を実行してください – CjS

+0

この問題は、 [githubで追跡しました](https://github.com/JakeWharton/gradle-android-test-plugin/issues/3)、すぐに解決策が出ています。あなたがこれを読んでいる頃には、既に利用可能かもしれません。 – gMale

答えて

2

インストールタスクはありませんが、インストールの先頭に2つのタスクがあります。あなたは、あなたが話していることを理解するために、完全なタスク名を提供するか、少なくともGradleを提供する必要があります(例:、installD、ID、またはinstallDebugが動作するフルなもの)

https://github.com/square/gradle-android-test-plugin/issues/6#issuecomment-22881923

+3

私の 'build.gradle'は完了していませんか?あなたの助けを借りて、私は './gradlew install'がプラグインのルートディレクトリの' build.gradle'を参照していることを理解しましたが、 "installDebug"はどこから来たのですか? 私は 'gradle testDebug'を試しても、私はよく知っている'タスクの依存関係を判断できませんでした 'というメッセージが表示されます:MyApp:testDebug'.' – artburkart

2

あなたが

を実行するためのテストのために ./gradlew testコマンドを実行する必要がありますように、それはそうです
+1

'gradle tasks'または' gradle test'を試してみると、次のようになります。 'タスクの依存関係を判断できませんでした:MyApp:testDebug'.' ' gradle tests'を試してみると私が得るもの: 'タスク 'テスト'がプロジェクト 'MyApp'に見つかりませんでした。候補者の中には、「タスク」、「テスト」などがあります。 – artburkart

+0

はbuild.gradleを使用しようとしましたが、Gradle 1.6ではうまく動作します。 – robotoaster

0

ため

gradle tasks 

から実行可能なタスクのリストについて

+0

ええ、私はプラグインのREADMEでもこれについて言及しました。しかし、ルートディレクトリからの** '。/ gradlew test' **や' '../ gradlew test' **の' 'AndroidManifest.xml'を含むディレクトリからの結果は ' 'タスクの依存関係を判別できませんでした ' :MyApp:testDebug'.' – artburkart