[解決済み] Android Studioのユニットテスト: データ(入力)ファイルの読み込み
2022-05-17 09:29:12
質問
ユニットテストにおいて、パスをハードコードすることなく、(デスクトップの)ファイルシステム上のjsonファイルからデータを読み取るにはどうすればよいでしょうか。
私は、静的な文字列を作成する代わりに、ファイルから(私の解析メソッドのための)テストの入力を読みたいと思います。
ファイルは私のユニットテストコードと同じ場所にありますが、必要であればプロジェクト内の他の場所に配置することも可能です。私は Android Studio を使用しています。
どのように解決するのですか?
によって
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
タスクを作って、リソースをclassesディレクトリにコピーして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 + シフト + F10 クラス全体、または特定のテストメソッドについて。
関連
-
[解決済み] Android Studioでパッケージ名を変更する
-
[解決済み] Android Studioの「assets」フォルダはどこに配置すればいいですか?
-
[解決済み] Android StudioのGradleとは?
-
[解決済み] Android Studioプロジェクトの.gitignoreには何を入れるべきですか?
-
[解決済み] Android Studioにライブラリプロジェクトを追加する方法を教えてください。
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] DialogFragment の setCancelable プロパティが機能しない
-
[解決済み] Android: 複数の選択オプションを持つポップアップを作成する
-
[解決済み] Android: ActionBarのホームアイコンをアプリのアイコンでないものに変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] Receiver not registered exception error?
-
[解決済み] アンドロイドでビットマップのサイズを変更する最もメモリ効率の良い方法とは?
-
[解決済み] Android Studio: キーの復元ができない
-
[解決済み] Uri.getPath()で実パスを取得する。
-
[解決済み] BackStackでFragment Animationを逆再生するには?
-
[解決済み] 確認(yes/no)用のDialogPreferenceを実装するには?
-
[解決済み] Fragment ActionBarCompatの内部からgetSupportActionBarを取得する。
-
[解決済み] DialogFragment の setCancelable プロパティが機能しない
-
[解決済み] 警告 あなたのApkは、プライバシーポリシーが必要なパーミッションを使用しています。(android.permission.READ_PHONE_STATE)