調査 #116
高橋 徹 さんがほぼ5年前に更新
h3. 調査目的
非インターネット接続環境で開発作業をするべく、JUnitライブラリをローカルマシン上に配置し、それを利用してJUnit5のテストを実行する方法を明らかにする。
h4. 前提条件
* 非インターネット接続の状況で新規にGradleプロジェクトを作成し、新たなJavaプログラムの開発を開始および継続できる。
* JPMSモジュール対応は対象外とする
h3. 調査結果
本調査では次を明らかにした。
* JUnit5ライブラリ(JARファイル)の選択、入手と配置
* ローカルマシン上に配置したJUnit5ライブラリを使用するGradleビルド定義の記述方法
* テストの実行
h4. 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@ ディレクトリを設けてその下に入れるのが一案である。
h4. ビルド定義の記述
# build.gradle にローカルマシン上の指定のディレクトリをリポジトリとする定義を記述する。flatDirでパスを指定する。パスはマシンにより異なるのでbuild.gradleにはパスを直接記述せず、Gradleプロパティ名を記述する。
<pre><code class="groovy">
repositories {
flatDir {
dirs "${property('library.junit5.dir')}"
}
}
</code></pre>
** プロパティ名にピリオドを含まない場合は、@dirs "${junit5}"@ と記述できる。ピリオドが含まれると、@dirs "${library.junit5}"@ は library変数のjunit5メソッド呼び出しと解釈されるので意図した通りに動かない。
# build.gradle にJUnit 5のjunit-platform-console-standalone への依存を記述する。
<pre><code class="groovy">
dependencies {
testImplementation 'org.junit.platform:junit-platform-console-standalone:1.6.2'
}
</code></pre>
# build.gradle に、JUnit 5を使う際の必須定義を記述
<pre><code class="groovy">
test {
useJUnitPlatform()
}
</code></pre>
# ユーザーホームのgradle.propertiesにGradleプロパティ定義を記述
Windowsの場合は、C:\Users\<ユーザー>\.gradle\gradle.properties
Linuxの場合は、/home/<ユーザー>/.gradle/gradle.properties
<pre><code class="groovy">
library.junit5.dir = C:/Program Files/Java/junit5
</code></pre>
h4. テスト実行
gradle build で一連のタスクの中でユニットテストが実行される。
テスト結果はbuild\reports\tests\test\index.html に出力される。
h3. 完了条件
調査結果を本説明欄に明記し、Wikiからリンクで本チケットを辿れるようにする。
戻る