操作
調査 #116
未完了
    高徹
    高徹
  
GradleでJUnit5テストをローカルマシンで実施する
    調査 #116:
    GradleでJUnit5テストをローカルマシンで実施する
  
開始日:
2020/05/08
期日:
2020/05/10 (5年以上 遅れ)
進捗率:
50%
予定工数:
説明
調査目的¶
非インターネット接続環境で開発作業をするべく、JUnitライブラリをローカルマシン上に配置し、それを利用してJUnit5のテストを実行する方法を明らかにする。
前提条件¶
- 非インターネット接続の状況で新規にGradleプロジェクトを作成し、新たなJavaプログラムの開発を開始および継続できる。
 - JPMSモジュール対応は対象外とする
 
調査結果¶
本調査では次を明らかにした。
- JUnit5ライブラリ(JARファイル)の選択、入手と配置
 - ローカルマシン上に配置したJUnit5ライブラリを使用するGradleビルド定義の記述方法
 - テストの実行
 
JUnit5ライブラリの選択と配置¶
JUnit 5は、ライブラリ(JARファイル)が細切れになっている。アプリケーションから利用するライブラリならよいが、副次的なテストライブラリでそれは全く嬉しくない。
ローカルマシンに配置するJARファイルは少ない方が作業・管理の手間が削減されるので、1つのJARファイルで賄える junit-platform-console-standalone を選択する。
mavenリポジトリにある次のURLからバージョン番号ディレクトリを辿って所望のJARファイルを入手する。
https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/
入手したJARファイルをローカルマシンに配置する。場所は任意だが
Windowsマシンなら、C:\Program Files\Java\junit5 ディレクトリを設けてその下に、
Linuxマシンなら、/usr/local/share/java/junit5 ディレクトリを設けてその下に入れるのが一案である。
ビルド定義の記述¶
- build.gradle にローカルマシン上の指定のディレクトリをリポジトリとする定義を記述する。flatDirでパスを指定する。パスはマシンにより異なるのでbuild.gradleにはパスを直接記述せず、Gradleプロパティ名を記述する。
repositories { flatDir { dirs "${property('library.junit5.dir')}" } }- プロパティ名にピリオドを含まない場合は、
dirs "${junit5}"と記述できる。ピリオドが含まれると、dirs "${library.junit5}"は library変数のjunit5メソッド呼び出しと解釈されるので意図した通りに動かない。 
 - プロパティ名にピリオドを含まない場合は、
 - build.gradle にJUnit 5のjunit-platform-console-standalone への依存を記述する。
dependencies { testImplementation 'org.junit.platform:junit-platform-console-standalone:1.6.2' } - build.gradle に、JUnit 5を使う際の必須定義を記述
test { useJUnitPlatform() } - ユーザーホームのgradle.propertiesにGradleプロパティ定義を記述
Windowsの場合は、C:\Users\<ユーザー>\.gradle\gradle.properties
Linuxの場合は、/home/<ユーザー>/.gradle/gradle.propertieslibrary.junit5.dir = C:/Program Files/Java/junit5 
テスト実行¶
gradle build で一連のタスクの中でユニットテストが実行される。
テスト結果はbuild\reports\tests\test\index.html に出力される。
完了条件¶
調査結果を本説明欄に明記し、Wikiからリンクで本チケットを辿れるようにする。
操作