2017-07-19 11 views
1

私は2つのプロジェクトモジュールを持っています:A、B、およびライブラリモジュール。両方のプロジェクトはライブラリを使用しています。私は両方のプロジェクトでいくつかの接続テストを行っています(UI Automator)。そのテストには、私がライブラリに移動したい共通のユーティリティコードがあります。どうしたらいいですか?Android接続テスト共通コードをライブラリモジュールに移動

私が試したこと。最初の方法:

  1. コピー共通のコードライブラリプロジェクトへのsrc/androidTest/javaの/ XXX フォルダ
  2. には androidTestCompile
  3. 下ライブラリbuild.gradleのUIのAutomatorの依存関係に追加以下のbuild.gradleをプロジェクトに追加:問題の私を構築する原因

dependecies { 
... 
androidTestCompile project(path: ':library', configuration: "debug") 
... 
} 

私はSRC/androidTestフォルダが

第二の方法をデバッグコンフィギュレーションを構築する時に使用されていない理解しているため、n個のプロジェクト:

  1. 第2のステップは

  2. 同じですが、ライブラリbuild.gradleに

  3. を追加します。
    task connectedTestsJars(type: Jar, dependsOn: "assembleXXXAndroidTest") { 
        classifier = 'connectedTests' 
        includes = ['com/**'] 
        from "$buildDir/intermediates/classes/androidTest/XXX" 
    } 
    
    configurations { 
        connectedTestArtifact 
    } 
    
    artifacts { 
        connectedTestArtifact connectedTestsJars 
    } 
    
    <オール開始= "3">

dependencies { 
... 
androidTestCompile project(path: ':library', configuration: "connectedTestArtifact") 
... 
} 

そのようにすべてがうまくコンパイルbuild.gradleプロジェクトに追加。ライブラリからのリソースが不足しているため、接続されたテストランタイム中にクラッシュする(両方のプロジェクトの共通コードとリソースが多い) ライブラリからのソースのみを使用していますが、代わりにaarファイルを使用する必要があることを理解しています(src/androidTestの内容を追加していますか?)。 その場合のタスクタイプは何ですか?または結果としてaarファイルを取得するために私のカスタムタスクで行うべきアクションは何ですか?他の方法?

私は、接続されたテストの共通コードを別の(2番目の)ライブラリモジュールに移動して使用することができますが、コンパイル時間を節約することはできません。 現在のモジュール構造を維持し、接続されたテスト共通コードをライブラリモジュールに移動する方法はありますか?

答えて

0

私は解決策を見つけました。プロジェクトのbuild.gradleに追加:

android { 
    sourceSets { 
     androidTest { 
      java.srcDirs = ['../<LIBRARY_MODULE_NAME>/src/androidTest/java', 'src/androidTest/java'] 
     } 
    } 
... 
} 

共通のコードが両方のプロジェクトでコンパイルされるため、より良い解決策があると確信しています。誰がそれを知っていますか?

関連する問題