2

Android Maven プラグインを使用してインストルメンテーション テストを実行できません。「libraryprojects」の例に最後まで従いましたが、セットアップにわずかな違いが 1 つあります。Android サポート jar を外部依存関係として追加しています。

私のセットアップは次のようになります。

  • APK lib プロジェクト (具体的には greendroid)

    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>support-v4</artifactId>
      <version>r6</version>
    </dependency>        
    
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <scope>provided</scope>
    </dependency>
    
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>
    
  • APK プロジェクト

    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>greendroid</groupId>
        <artifactId>GreenDroidFragment</artifactId>
        <version>1.0.0-SNAPSHOT</version>   
        <type>apklib</type>                 
    </dependency>
    
  • APK テスト プロジェクト (ここに問題があります .... )

    <dependency>
          <groupId>com.google.android</groupId>
          <artifactId>support-v4</artifactId>
          <version>r6</version>
                      <scope>provided</scope>
    </dependency>                   
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android-test</artifactId>
            <scope>provided</scope>
        </dependency>
    
        <dependency>
            <groupId>com.jayway.android.robotium</groupId>
            <artifactId>robotium-solo</artifactId>
            <version>3.2.1</version>
        </dependency>
    
        <dependency>
            <groupId>com.**</groupId>
            <artifactId>**</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>apk</type>
            <scope>provided</scope>
        </dependency>
    
        <dependency>
            <groupId>com.**</groupId>
            <artifactId>**</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>  
    

問題は、インストルメンテーション テストの実行時に、delvik がサポート jar を検出またはリンクできないことです。

私の質問は、テスト APK 内の必要なファイルをメイン アプリケーション APK に対して解決するように delvik に指示するにはどうすればよいですか? 理論的には、テスト APK 内で提供される必要な依存関係 (android-support jar) のスコープを設定すると機能するはずですが、機能しません

以下は、私が実験したいくつかのシナリオです。

  • Android サポート jar を APK テスト プロジェクトの一部としてパッケージ化することにより、delvik はコンパイルされたコードを解決できないと不満を漏らします。これは、メイン APK の dex 出力がテスト APK の dex 出力と異なるためです。

    W/dalvikvm(328): Class resolved by unexpected DEX:      
    Lcom/**/android/**/GenerateOtpFragment;(0x44edffb0):0x121de0 ref   
    [Landroid/support/v4/app/Fragment;] Landroid/support/v4/app/Fragment;(0x44edffb0)
    
  • Android サポートを APK テスト プロジェクトの一部としてパッケージ化していないため、delvik はコンパイルされたコードを見つけることができません。これは、スコープを提供するか、依存関係を完全に除外するときに発生します。

    W/ClassPathPackageInfoSource(632): Cannot load class. Make sure it is in your apk.
    Class name: 'android.support.v4.os.ParcelableCompatCreatorHoneycombMR2'. 
    Message: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2
    

私が考えることができる唯一のことは、手動で APK テスト プロジェクトに、delvik リンク メカニズムを使用してメイン APK プロジェクトからの android-support 依存関係を解決するように指示することです。

どんなアイデアでも大歓迎です - マイケル

4

1 に答える 1

0

よくわかりませんが、これが説明かもしれないと思います:

apk をスキャンするインストルメンテーション テスト...問題ではない

于 2014-06-03T15:53:08.790 に答える