MavenやGradleプラグインやshを使うパターンがあるみたいですが、Gradleプラグインを使った方法を試してみます。
build.gradle
Gradleプラグインの使い方は、Githubに書かれています。自動生成したクラスは、置き場所を変えたほうが分かりやすいのでsrc-gen配下に出力しています。
plugins {
id "com.github.opengl-BOBO.assertjGen" version "1.1.8"
}
// assertj-gen
ext {
assertjGenPreConfig = [
'assertjGenerator': 'org.assertj:assertj-assertions-generator:2.1.0',
'sourceSets': ['main]
]
}
sourceSets.test.java.srcDirs += 'src-gen/test/java'
assertjGen {
// test.Hogeがアサーションを生成するクラス。
// パッケージ指定もできる
classOrPackageNames = ['test.Hoge']
outputDir = 'src-gen/test/java'
}
生成対象のクラス
package test;
public class Hoge {
public final int hoge;
public Hoge(final int hoge) {
this.hoge = hoge;
}
public String getFuga() {
return "fuga";
}
}
アサーションの生成
assertjGenを使用してアサーションを生成します。$ ./gradlew assertjGen
> Task :assertjGen
07:22:13.289 INFO o.a.a.g.c.AssertionGeneratorLauncher - Generating assertions for classes [class test.Hoge]
07:22:13.310 INFO o.a.a.g.c.AssertionGeneratorLauncher - Generating assertions for class : test.Hoge
07:22:13.326 INFO o.a.a.g.c.AssertionGeneratorLauncher - Generated Hoge assertions file -> /home/hoge/IdeaProjects/test-pj/src-gen/test/java/./test/HogeAssert.java
生成されたクラス
下の画像のようなアサーションクラスが生成されます。生成されたクラスを使用する
@Test
void test() {
final Hoge hoge = new Hoge(100);
HogeAssert.assertThat(hoge)
.hasHoge(10);
}
テスト結果もわかりやすく出力されます。
Expecting hoge of:
<test.Hoge@3c72f59f>
to be:
<10>
but was:
<100>