Spring Boot + npm + Geb で入力フォームを作ってテストする ( その53 )( Gradle を 3.5 → 4.6 へバージョンアップする )
概要
記事一覧はこちらです。
Spring Boot + npm + Geb で入力フォームを作ってテストする ( その52 )( 入力画面3を作成する5 ) の続きです。
- 今回の手順で確認できるのは以下の内容です。
- Gradle を 3.5 → 4.6 へバージョンアップします。
参照したサイト・書籍
Gradle Docs 4.0 - Gradle Release Notes
https://docs.gradle.org/4.0/release-notes.htmlGradle Docs 4.1 - Gradle Release Notes
https://docs.gradle.org/4.1/release-notes.html
目次
手順
build タスク実行時に出たエラーを解消する
Gradle のバージョンアップの前に clean タスク実行 → Rebuild Project 実行 → build タスクを実行したところ、PMD の警告が出ていたので解消します。
'The String literal "セ??トされるはず?????ータがセ??トされて??ません" appears 5 times in this file; the first occurrence is on line 91'
src/main/java/ksbysample/webapp/bootnpmgeb/web/inquiry/InquiryInputController.java の中で throw new IllegalArgumentException("セットされるはずのデータがセットされていません");
とエラーメッセージの文字列を直接記述していたのが原因なので、定数文字列に変更します。
src/main/resources/messages_ja_JP.properties の以下の点を変更します。
InquiryInputController.validate.form.error=セットされるはずのデータがセットされていません InquiryInput02Form.zipcode.UnmatchPattern=郵便番号が数字7桁ではありません。 ..........
InquiryInputController.validate.form.error=セットされるはずのデータがセットされていません
を追加します。
https://github.com/ksby/ksbysample-webapp-lending/blob/1.0.x/src/main/java/ksbysample/webapp/lending/helper/message/MessagesPropertiesHelper.java をコピーして src/main/java/ksbysample/webapp/bootnpmgeb/helper/message/MessagesPropertiesHelper.java に配置します。
src/main/java/ksbysample/webapp/bootnpmgeb/web/inquiry/InquiryInputController.java の以下の点を変更します。
@Slf4j @Controller @RequestMapping("/inquiry/input") @SessionAttributes("sessionData") public class InquiryInputController { .......... private static final String VALIDATE_FORM_ERROR = "InquiryInputController.validate.form.error"; private final ModelMapper modelMapper; private final InquiryInput02FormValidator inquiryInput02FormValidator; private final Validator mvcValidator; private final MessagesPropertiesHelper mph; /** * コンストラクタ * * @param modelMapper {@link ModelMapper} オブジェクト * @param inquiryInput02FormValidator {@link InquiryInput02FormValidator} オブジェクト * @param mvcValidator {@link Validator} オブジェクト * @param mph {@link MessagesPropertiesHelper} オブジェクト */ public InquiryInputController(ModelMapper modelMapper , InquiryInput02FormValidator inquiryInput02FormValidator , Validator mvcValidator , MessagesPropertiesHelper mph) { this.modelMapper = modelMapper; this.inquiryInput02FormValidator = inquiryInput02FormValidator; this.mvcValidator = mvcValidator; this.mph = mph; } .......... /** * 入力画面1 「次へ」ボタンクリック時の処理 * * @return 入力画面2の URL */ @PostMapping(value = "/01", params = {"move=next"}) public String input01MoveNext(@Validated InquiryInput01Form inquiryInput01Form , BindingResult bindingResult , SessionData sessionData , UriComponentsBuilder builder) { if (bindingResult.hasErrors()) { bindingResult.getAllErrors().stream().forEach(e -> log.warn(e.getCode())); throw new IllegalArgumentException(mph.getMessage(VALIDATE_FORM_ERROR, null)); } .......... } ..........
private static final String VALIDATE_FORM_ERROR = "InquiryInputController.validate.form.error";
を追加します。private final MessagesPropertiesHelper mph;
を追加します。- コンストラクタの引数に
MessagesPropertiesHelper mph
を、メソッド内にthis.mph = mph;
を追加します。 throw new IllegalArgumentException("セットされるはずのデータがセットされていません");
→throw new IllegalArgumentException(mph.getMessage(VALIDATE_FORM_ERROR, null));
に変更します(全部で5ヶ所)。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行して PMD の警告が出力されなくなったことを確認します(画面キャプチャは省略します)。
Gradle を 3.5 → 4.6 へバージョンアップする
build.gradle の以下の点を変更します。
task wrapper(type: Wrapper) {
gradleVersion = '4.6'
}
gradleVersion = '3.5'
→gradleVersion = '4.6'
に変更します。
コマンドプロンプトを起動し、gradlew wrapper
コマンドを実行します。
gradle/wrapper/gradle-wrapper.properties を開くと gradle-4.6-bin.zip に変更されています。
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
必ず失敗させているテストが1つあるので無効にします。src/test/groovy/ksbysample/webapp/bootnpmgeb/web/inquiry/InquiryInputControllerTest.groovy の以下の点を変更します。
/* @Test void "項目全てに入力して次へボタンをクリックすると確認画面へ遷移し、前の画面へ戻るボタンを押して入力画面3へ戻ると以前入力したデータがセットされて表示される"() { expect: assert false, "確認画面を実装してからテストを作成する" } */
void "項目全てに入力して次へボタンをクリックすると確認画面へ遷移し、前の画面へ戻るボタンを押して入力画面3へ戻ると以前入力したデータがセットされて表示される"() { ... }
のテストをコメントアウトします。
clean タスク実行 → Rebuild Project → build タスクを実行します。。。が findbugsMain タスクでエラーになりました。
エラーが発生している Build file 'C:\project-springboot\ksbysample-boot-miscellaneous\boot-npm-geb-sample\build.gradle' line: 87
は以下の部分で、> No signature of method: org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.exclude() is applicable for argument types: (java.lang.String) values: [**/*.properties]
というエラーメッセージが出ています。
tasks.withType(FindBugs) { ... }
の doFirst { ... }
の部分はさすがに Gradle 4.x 以降になったら不要になっていると思いたいので、一旦削除してみます。
tasks.withType(FindBugs) { reports { xml.enabled = false html.enabled = true } }
clean タスク実行 → Rebuild Project → build タスクを実行すると、今度は BUILD SUCCESSFUL
のメッセージが出力されました。
コンソールに出力されていた https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings を見ると、By default, Gradle won’t display all warnings (e.g. deprecation warnings).
という記述がありました。これで FindBugs Plugin の warnings が出なくなっているようです。Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
のメッセージが出ていますが、 5.0 にバージョンアップする時にまた考えることにします。
問題なさそうですので、このまま 4.6 を使います。src/test/groovy/ksbysample/webapp/bootnpmgeb/web/inquiry/InquiryInputControllerTest.groovy のコメントアウトしたテストは元に戻します。
履歴
2018/05/27
初版発行。