ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 객체.

     

     

Designed by Tistory.