ユニット テストで、パスをハードコーディングせずに、(デスクトップ) ファイル システム上の json ファイルからデータを読み取るにはどうすればよいですか?
静的な文字列を作成するのではなく、ファイルからテスト入力 (解析メソッド用) を読み取りたいと思います。
ファイルはユニット テスト コードと同じ場所にありますが、必要に応じてプロジェクト内の別の場所に配置することもできます。Android Studio を使用しています。
ベストアンサー1
バージョンによって異なりますandroid-gradle-plugin
:
1. バージョン1.5以上:
jsonファイルを置いてsrc/test/resources/test.json
次のように参照するだけです
classLoader.getResource("test.json").
Gradle の変更は必要ありません。
2. バージョン1.5未満: (または何らかの理由で上記の解決策が機能しない場合)
少なくともAndroid Gradle プラグイン バージョン 1.1リンクに従って、Android Studio を正しく設定してください。
ディレクトリを作成します
test
。ユニット テスト クラスをjava
ディレクトリに配置し、リソース ファイルをres
ディレクトリに配置します。Android Studio は次のようにマークします。gradle
リソースをクラス ディレクトリにコピーして表示できるようにするタスクを作成しますclassloader
。android{ ... } task copyResDirectoryToClasses(type: Copy){ from "${projectDir}/src/test/res" into "${buildDir}/intermediates/classes/test/debug/res" } assembleDebug.dependsOn(copyResDirectoryToClasses)
これで、このメソッドを使用して
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()); }
- クラス全体または特定のテスト メソッドに対して、Ctrl++で単体テストを実行します。ShiftF10