Android Studio ユニットテスト: データ (入力) ファイルの読み取り 質問する

Android Studio ユニットテスト: データ (入力) ファイルの読み取り 質問する

ユニット テストで、パスをハードコーディングせずに、(デスクトップ) ファイル システム上の json ファイルからデータを読み取るにはどうすればよいですか?

静的な文字列を作成するのではなく、ファイルからテスト入力 (解析メソッド用) を読み取りたいと思います。

ファイルはユニット テスト コードと同じ場所にありますが、必要に応じてプロジェクト内の別の場所に配置することもできます。Android Studio を使用しています。

ベストアンサー1

バージョンによって異なりますandroid-gradle-plugin:

1. バージョン1.5以上:

jsonファイルを置いてsrc/test/resources/test.json次のように参照するだけです

classLoader.getResource("test.json"). 

Gradle の変更は必要ありません。

2. バージョン1.5未満: (または何らかの理由で上記の解決策が機能しない場合)

  1. 少なくともAndroid Gradle プラグイン バージョン 1.1リンクに従って、Android Studio を正しく設定してください。

  2. ディレクトリを作成しますtest。ユニット テスト クラスをjavaディレクトリに配置し、リソース ファイルをresディレクトリに配置します。Android Studio は次のようにマークします。

    ここに画像の説明を入力してください

  3. gradleリソースをクラス ディレクトリにコピーして表示できるようにするタスクを作成しますclassloader

    android{
       ...
    }
    
    task copyResDirectoryToClasses(type: Copy){
        from "${projectDir}/src/test/res"
        into "${buildDir}/intermediates/classes/test/debug/res"
    }
    
    assembleDebug.dependsOn(copyResDirectoryToClasses)
    
  4. これで、このメソッドを使用してFileファイル リソースへの参照を取得できます。

    private static File getFileFromPath(Object obj, String fileName) {
        ClassLoader classLoader = obj.getClass().getClassLoader();
        URL resource = classLoader.getResource(fileName);
        return new File(resource.getPath());
    }
    
    @Test
    public void fileObjectShouldNotBeNull() throws Exception {
        File file = getFileFromPath(this, "res/test.json");
        assertThat(file, notNullValue());
    }
    
  5. クラス全体または特定のテスト メソッドに対して、Ctrl++で単体テストを実行します。ShiftF10

おすすめ記事