-
Lombok과 테스트코드 폴더 만들기Java 2023. 8. 17. 17:28
Lombok 어노테이션
final : 반드시 거기만~
getter랑 setter는
클래스 앞에, 필드 앞에 둘다 붙일 수 있다.
클래스는 모두 getter,setter 추가해라. 일반적인 방법.
필드는 그 필드만.
- 복합처리
Data 많이 씀.
이하 생략
*단위테스트
제대로 돌아가는지 항상 확인하는 것
실제 코드와 테스트코드는 따로 관리하는 게 좋다.
+) junit(제이유닛) 을 사용하면 main을 사용하지 않아도 가능하다.
테스트코드 폴더 만들기
해당 프로젝트 우클릭하고 properties로 들어가서 아래의 창을 연다.
[Java Build Path] 선택
[Add Folder] - "Test"입력
*나중에 배포할 때는 제외시킨다.
Contains test sources : No 라고 되어있는데 더블클릭하여 Yes로 바꿔주어야 한다.
Allow output folders for source folders 여기도 체크를 해야하는데,
창을 보면 Yes로 바꿨을 때부터 에러가 떠 있다.
에러 : 컴파일에서 테스트파일이 자체 아웃풋 폴더가 있어야 소스파일과 겹치지 않으므로
다른 전용 폴더를 만들어달라는 뜻
디폴트 아웃풋 폴더와 분리작업하기
빠진 부분이므로 source파트에서 test 폴더를 하나 더 만들어주자.
Allow output folders for source folders를 체크해 준다.
output folder를 선택하여 Edit 후
Specific output folder로 바꾸어 이름에 (-)로 bin을 추가하여 입력해준다.
완료되면 에러메시지가 사라져있다.
좌측 디렉토리에서 보면 회색으로 보이는 test 폴더를 볼 수 있다.
이제 src와 똑같은 구조로 패키지를 만들어 주자.(틀려도 되나 일반적으로 똑같이 한다.)
테스트 클래스도 만들어준다.
이제 member와 memberTest 클래스는 물리적으로는 다르나 동일 패키지에 있는 걸로 취급한다.
소스폴더의 클래스에 있는 어노테이션들에 의해 잘 나온다.
원래 소스폴더로 돌아와서
사람을 여러 명 관리할 것이니 vo말고 dao로 패키지를 하나 더 만들어주자.
🖤DAO
Data Access Object
데이터 베이스 연동을 위한 객체
❗주의사항
member클래스 쓸 때 자바 멤버 말고 우리가 만든 멤버여야 한다
안 그러면 에러 든다.
CRUD
회원정보를 관리할 때
추가하는 건 실패하기 어려우므로 void.
원리는 간단하게 메서드명 add
변수는 다룰 멤버변수인 Member 클래스의 회원 m >> Member m
객체로 테스트코드에 멤버 추가해 보기
데이터 삽입이 성공했는지 아는 법
전체 개수가 5가 맞냐보다는 아니냐가 더 나으므로 !=5 이면 실패가 나오도록 하기.
그러나 한 눈에 안 들어오므로 예외 발생시키기
단정문
assert
~임을 단정한다.
쓰기전에 실행 조건이 필요하다.
VM에게 지시
>> -ea
java -em MemberDaoTest 로 실행하라는 뜻
동작 결과
예외가 없으면 이렇게
그렇다면 add하기 전에 길이를 기억했다가 +1 하면 되니
이렇게 바꿔주면 된다.
너무 길어지니 각 테스트별로 분리해서 메서드화를 해 보자.
테스트코드의 DaoTest 클래스
package org.galapagos.mcmorning.dao; import java.util.List; import org.galapagos.mcmorning.vo.Member; public class MemberDaoTest { public static void main(String[] args) { testRead(); testAdd(); } static void testRead() { MemberDao dao = new MemberDao(); // 물리적으로는 떨어져있으나 마음으로는(논리적) 이어져 있는 패키지 // import가 필요없음 List<Member> list = dao.getMemberList(); for (Member m : list) { System.out.println(m); } } static void testAdd() { MemberDao dao = new MemberDao(); List<Member> list = dao.getMemberList(); int l = list.size(); Member m2 = new Member("dooli", "1234", "둘리", "dooli@gmail.com"); dao.add(m2); // 단정문 VM 매개변수로 -ea => java -em MemberDaoTest 로 실행하라는 뜻 assert list.size() == l + 1 : "추가실패"; // true면 통과, false이면 예외발생/ 지금은 5라서 false for (Member m : list) { System.out.println(m); } } }
Member(userid=David, password=1234, name=데이비드, email=david@naver.com)
Member(userid=nana, password=4444, name=나나, email=nana@naver.com)
Member(userid=seok, password=1234, name=석구, email=sk@naver.com)
Member(userid=kim, password=1234, name=김철수, email=kim@naver.com)
Member(userid=David, password=1234, name=데이비드, email=david@naver.com)
Member(userid=nana, password=4444, name=나나, email=nana@naver.com)
Member(userid=seok, password=1234, name=석구, email=sk@naver.com)
Member(userid=kim, password=1234, name=김철수, email=kim@naver.com)
Member(userid=dooli, password=1234, name=둘리, email=dooli@gmail.com)
cli : command line interface 의 약자
퍼사드 패턴.
# 3 Tier 구조
프레젠테이션 레이어
사용자 UI
-
서비스레이어(비즈니스로직 레이어)
: 알고리즘
Data Access 레이어
: DB / file
- VO 객체(데이터 모양 정의)
- DAO 객체.
'Java' 카테고리의 다른 글
0816. 바이트 스트림, 문자 스트림 (0) 2023.08.17 0809. Java 추상클래스, 인터페이스, 예외처리 (0) 2023.08.10 이클립스 자바 Syntax Coloring element 구성 (0) 2023.08.09