GradleのMulti Projectでjavadocをまとめる
GradleのMulti Projectでjavadocをまとめる
とりあえず調べたものをまとめておく。
gradleマルチプロジェクトのサブプロジェクト全部ひっくるめたjavadocを生成する - もぐてっく
GradleのマルチプロジェクトでJavaDocを一箇所にまとめて出力する - 試したこととか困ったこととか
Gradle で Javadoc API Document を出力する - まくまくGradleノート
どれも決め手に掛ける。
これならいけそうで、実際いけた。
discuss.gradle.org
task aggregatedJavadocs(type: Javadoc, description: 'Generate javadocs from all child projects as if it was a single project', group: 'Documentation') { destinationDir = file("$buildDir/docs/javadoc") title = "$project.name $version API" options.author true options.links 'http://docs.spring.io/spring/docs/4.3.x/javadoc-api/', 'http://docs.oracle.com/javase/8/docs/api/', 'http://docs.spring.io/spring-ws/docs/2.3.0.RELEASE/api/', 'http://docs.spring.io/spring-security/site/docs/4.0.4.RELEASE/apidocs/' options.addStringOption 'Xdoclint:none', '-quiet' subprojects.each { proj -> proj.tasks.withType(Javadoc).each { javadocTask -> source += javadocTask.source classpath += javadocTask.classpath excludes += javadocTask.excludes includes += javadocTask.includes } } }
junit4の階層化をしてみる
junit4の階層化をしてみる
junit4の階層化をして、テスト結果を見やすく、また、テストケースをカテゴライズして管理を楽にできるようにしたかった。
複数階層にすることもできるようだった。
// テストがないクラスにはEnclosedしていく @RunWith(Enclosed.class) public class SampleTest { @RunWith(Enclosed.class) public class 階層1 { // 階層化した場合、テストが含まれるクラスはstatic化 public static class 階層1_1 { @Test public void テスト1() { } @Test public void テスト2() { } } public static class 階層1_2 { @Test public void テスト1() { } } } @RunWith(Enclosed.class) public class 階層2 { public static class 階層2_2 { @Test public void テスト1() { } // パラメータテストも@Testの並びに書く @RunWith(Theories.class) public static class パラメータテストのクラス { @DataPoint public static int PARAM_1 = 1; @Theory public void パラメータテスト(int num) { } } } } }
階層かとパラメータテストを併用できないと思っていましたが、よく確認してないだけでした。
パラメータテストの書き方はこの辺参考に
JUnitにおけるパラメータ化テスト入門 - Qiita
既存のプロジェクトをGradleの環境に移行していく テスト編
動機
テストコードがないレガシーサバンナに投下されたので、ゴリゴリとテスト環境を作っていこうと試行錯誤している。
既存プロジェクトは、jar単位でプロジェクト作成されており、それらがSVNで管理されている。
並行開発や、現行の開発プロセスから各jar(アプリケーション?機能?)の単位でテストコード用のプロジェクトを作成する方針とした。
各jar単位でテストプロジェクトを作成するのはよいのだが、基底となるライブラリ(というか共通化パーツ)を作りたかった。
依存関係が解決できない
プロジェクト間に依存関係を付けてビルドしてみても、パッケージが見つからない的なエラーが出てきてビルドが失敗する。
↓こんな感じで単純にプロジェクトとしてテスト用にImplementationした場合。
dependencies { // テスト対象のプロジェクト testImplementation project(':AppSubProject1') // テスト用の基底プロジェクト testImplementation project(':AppSubProject1TestBase') }
調べてみると引っかかった
調べてみたら記事が見つかりました。
nainaistar.hatenablog.com
記載内容を参考に修正してみるとうまくいきました。
dependencies { // テスト対象のプロジェクト testImplementation project(':AppSubProject1') // テスト用の基底プロジェクト testImplementation project(':AppSubProject1TestBase').sourceSets.test.output }
めでたしめでたし。