質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

2235閲覧

lombokの@Dataで生成されるgetter/setterがJUnitで見つからない

KazukiMaeda

総合スコア12

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/04/14 13:54

編集2022/01/12 10:55

質問

lombokの@Dataアノテーションを付与したModelを参照するControllerに対してテストを実行すると、lombokによって生成されているgetter/setterが見つからないというエラーが発生してしまいます。

Java初心者なので、そもそもJUnitの実行方法が異なるなどあるかもしれませんが、ご知見をいただきたく、よろしくおねがいします。

環境

Javaのバージョン

$ java -version java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

IDEの種類とバージョン

IntelliJ IDEA 2019.1 (Community Edition) Build #IC-191.6183.87, built on March 27, 2019 JRE: 1.8.0_202-release-1483-b39 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o macOS 10.12.6

ビルドツールの種類

$ gradle --version ------------------------------------------------------------ Gradle 5.3.1 ------------------------------------------------------------ Build time: 2019-03-28 09:09:23 UTC Revision: f2fae6ba563cfb772c8bc35d31e43c59a5b620c3 Kotlin: 1.3.21 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018 JVM: 1.8.0_201 (Oracle Corporation 25.201-b09) OS: Mac OS X 10.12.6 x86_64

依存ライブラリ

groovy

1plugins { 2 id 'org.springframework.boot' version '2.1.4.RELEASE' 3 id 'java' 4 id 'war' 5} 6 7apply plugin: 'io.spring.dependency-management' 8 9group = 'com.example.spring' 10version = '0.0.1-SNAPSHOT' 11sourceCompatibility = '1.8' 12 13configurations { 14 compileOnly { 15 extendsFrom annotationProcessor 16 } 17} 18 19repositories { 20 mavenCentral() 21 maven { 22 url "https://plugins.gradle.org/m2/" 23 } 24} 25 26dependencies { 27 implementation 'org.springframework.boot:spring-boot-starter-jdbc' 28 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 29 implementation 'org.springframework.boot:spring-boot-starter-validation' 30 implementation 'org.springframework.boot:spring-boot-starter-web' 31 implementation 'org.springframework.boot:spring-boot-starter-security' 32 compileOnly 'org.projectlombok:lombok' 33 runtimeOnly 'org.springframework.boot:spring-boot-devtools' 34 runtimeOnly 'com.h2database:h2' 35 annotationProcessor 'org.projectlombok:lombok' 36 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 37 testImplementation 'org.springframework.boot:spring-boot-starter-test' 38 implementation 'org.webjars:jquery:1.11.1' 39 implementation 'org.webjars:bootstrap:3.3.7-1' 40 implementation 'org.springframework.boot:spring-boot-starter-aop' 41 implementation 'org.springframework:spring-aop' 42 implementation 'org.springframework.security:spring-security-test' 43 implementation 'org.aspectj:aspectjweaver' 44 // implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity4' 45 compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity4', version: '2.1.2.RELEASE' 46}

コード

Model

java

1package com.example.spring.login.domain.model; 2 3import lombok.Data; 4 5@Data 6public class User { 7 8 private String userId; 9 private String password; 10 private String userName; 11 private int age; 12 private boolean marriage; 13 private String role; 14}

Dao

java

1package com.example.spring.login.domain.repository; 2 3import java.util.List; 4import org.springframework.dao.DataAccessException; 5import com.example.spring.login.domain.model.User; 6 7 8public interface UserDao { 9 10 // Userテーブルの件数を取得 11 public int count() throws DataAccessException 12 13} 14

Controller

Java

1import com.example.spring.login.domain.model.User; 2 3//(中略) 4 5@Controller 6public class HomeController { 7 8 @GetMapping("/userDetail/{id:.+}") 9 public String getUserDetail(@ModelAttribute SignupForm form, Model model, 10 @PathVariable("id") String userId) { 11 12 if (userId != null && userId.length() > 0) { 13 User user = userService.selectOne(userId); 14 15 form.setUserId(user.getUserId()); 16 form.setUserName(user.getUserName()); 17 form.setBirthday(user.getBirthday()); 18 form.setAge(user.getAge()); 19 form.setMarriage(user.isMarriage()); 20 21 // register model 22 model.addAttribute("signupForm", form); 23 } 24 25 return "login/homeLayout"; 26 } 27}

Test

Java

1package com.example.spring; 2 3import static org.junit.Assert.*; 4 5import com.example.spring.login.domain.repository.UserDao; 6import org.junit.Test; 7import org.junit.runner.RunWith; 8import org.springframework.beans.factory.annotation.Autowired; 9import org.springframework.beans.factory.annotation.Qualifier; 10import org.springframework.boot.test.context.SpringBootTest; 11import org.springframework.test.context.junit4.SpringRunner; 12import org.springframework.transaction.annotation.Transactional; 13 14@RunWith(SpringRunner.class) 15@SpringBootTest 16@Transactional 17public class UserDaoTest { 18 19 @Autowired 20 @Qualifier("UserDaoJdbcImpl") 21 UserDao dao; 22 23 // test for count method 24 @Test 25 public void countTest1() { 26 assertEquals(dao.count(), 2); 27 } 28}

エラー

Error:(85, 32) java: シンボルを見つけられません シンボル: メソッド getUserId() 場所: タイプcom.example.spring.login.domain.model.Userの変数 user Error:(86, 34) java: シンボルを見つけられません シンボル: メソッド getUserName() 場所: タイプcom.example.spring.login.domain.model.Userの変数 user ・・・(以下同様)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rubytomato

2019/04/14 23:23

JUnitでということですが、JUnit以外のコード(例えばコントローラ)でエラーは起きていないということでしょうか? それからJavaのバージョン、IDEの種類とバージョン、ビルドツールの種類等の環境周りの情報を質問へ追記してください。 差し支えなければビルドファイル(Mavenならpom.xml)の内容もお願いします。
退会済みユーザー

退会済みユーザー

2019/04/14 23:39

rubytomato コンパイルエラーよ。
KazukiMaeda

2019/04/17 09:12

rubytomatoさん ありがとうございます。環境について追記しました。 JUnit以外のコードについてはエラーが起きていないものと思います(bootRunを実行するとローカルの環境が問題なく立ち上がります。)
rubytomato

2019/04/17 13:08

情報の追記ありがとうございました。 お手数ですが更に3点ほど確認させてください。 1)ローカル環境でbootRunを実行すると動作確認できるということですが、ブラウザでアクセスすると期待する結果が得られるということで良いでしょうか? (つまり、適切なユーザIDを指定するとDBからデータが取得でき、それが画面に表示される) 2) 質問文に”Controllerに対してテストを実行すると ... エラーが発生してしまいます。”とありますが、実際に提示されているテストコードはUserDaoTestというDaoクラスに対してのテストコードのようです。エラーが起きているのは未提示のコントローラのテストコードでしょうか? それとも提示されているUserDaoTestというテストコードでしょうか? 3) Intellij IDEAのannotation processingが有効になっているか確認してください。確認方法は、メニューのFile -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors で、この画面の"Enable annotation processing"にチェックが入っているか. またlombokプラグインがインストールされているかもご確認ください。
guest

回答1

0

compileOnly 'org.projectlombok:lombok'

コンパイルオンリーだからじゃないっすか?

投稿2019/04/18 00:20

NARH

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問