2017-07-29 14 views
0

でエスプレッソの依存関係は、私は私のAndroidのプロジェクトでは、以下のGradleの構成を有する:のAndroidメーカー:Gradleの

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 
    } 
} 
apply plugin: 'com.android.application' 

dependencies { 
    repositories { 
     jcenter() 
     google() 
    } 
    compile fileTree(include: '*.jar', dir: 'libs') 
    compile 'com.android.support:support-v4:25.4.0' 
    androidTestCompile 'junit:junit:4.12' 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.0' 

} 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.0" 

    buildTypes { 
     debug { 
      debuggable true 
      applicationIdSuffix ".debug" 
     } 
    } 

    defaultConfig { 
     jackOptions { 
      enabled true 
     } 
     testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
} 

は、私はAndroidのスタジオ録音機能を経由してエスプレッソテストを記録してUIテストを作り始めたいです。その後、テストクラスファイルを保存するときに、インポートの一部が解決されなかったことに気付きました。

Error:(17, 8) The import org.junit cannot be resolved 
Error:(19, 15) The import android.support.test cannot be resolved 

あなたが見ることができるように、私が直接JUnitの依存関係を追加、なぜないアンドロイドスタジオやGradleのは、JUnitのライブラリを参照してくださいでしょうか?

これは私のDEPツリーです:

androidTestCompile - Classpath for compiling the androidTest sources. 
+--- junit:junit:4.12 
| \--- org.hamcrest:hamcrest-core:1.3 
\--- com.android.support.test.espresso:espresso-core:3.0.0 
    +--- com.android.support.test:runner:1.0.0 
    | +--- com.android.support:support-annotations:25.4.0 
    | +--- junit:junit:4.12 (*) 
    | \--- net.sf.kxml:kxml2:2.3.0 
    +--- com.android.support.test:rules:1.0.0 
    | \--- com.android.support.test:runner:1.0.0 (*) 
    +--- com.android.support.test.espresso:espresso-idling-resource:3.0.0 
    +--- com.squareup:javawriter:2.1.1 
    +--- javax.inject:javax.inject:1 
    +--- org.hamcrest:hamcrest-library:1.3 
    | \--- org.hamcrest:hamcrest-core:1.3 
    +--- org.hamcrest:hamcrest-integration:1.3 
    | \--- org.hamcrest:hamcrest-library:1.3 (*) 
    \--- com.google.code.findbugs:jsr305:2.0.1 

そして、私のソースフォルダは、次のように構成されています。私が見つけたとおり、あなたの助け

+0

実際の依存関係のツリーを調べるには、この質問を参照してください。https://stackoverflow.com/questions/21645071/using-gradle-to-find-dependency-tree –

+0

@IvanProninは、私がjunit 4.12を持っていることを確認しました。木。私はbuild.gradle 'androidTestCompile 'junit:junit:4.12''への依存関係を余儀なくさえしました。 –

+0

'instrumentTest.setRoot( 'tests')とは何ですか?それを削除するとどうなりますか? –

答えて

0

ため

└── src 
    ├── androidTest 
    │   └── java 
    │    └── pt 
    │     └── joaomneto 
    │      └── titancompanion 
    │     └── (expresso tests source code) 
    └── pt 
     └── joaomneto 
      └── titancompanion 
       └── (app source code) 

おかげで、問題は「wasn私は使用していたフォルダ構造を持っています。より多くの標準のsrc /メイン/ JavaおよびSRC/androidTest/Javaへのフォルダ構造を変更し、それに応じて

sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src/main/java'] 
     resources.srcDirs = ['src/main/java'] 
     aidl.srcDirs = ['src/main/java'] 
     renderscript.srcDirs = ['src/main/java'] 
     res.srcDirs = ['res'] 
     assets.srcDirs = ['assets'] 
    } 

    androidTest.java.srcDir 'src/androidTest/java' 
    debug.setRoot('build-types/debug') 
    release.setRoot('build-types/release') 
} 

Androidのスタジオをgradle.buildを変更した後、今の適切な場所にテストファイルを参照してくださいし、適用することができました良い依存関係のツリースコープです。

関連する問題