메이븐 이용하기(롬복,junit)

1. Maven (메이븐)

이클립스에는 메이븐이 이미 설치되어 있다. 메이븐은 자파용 프로젝트 관리 도구다. ‘pom.xml’이라는 파일을 만들고 여기에 사용할 라이브러리들을 depency로 추가하면 해당 프로젝트에 사용이 가능하고, 메이븐을 통해 외부 라이브러리들을 설정만으로 내 로컬 시스템에 자동 다운로드 시킬 수 있다.
ex) 롬복을 메이븐을 통해 추가한 상황

//pom.xml 파일...
  <dependencies>

  	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.24</version>
		<scope>provided</scope>
	</dependency>

  </dependencies>

1.1 이클립스 메이븐 적용하기

이클립스 기준

  1. File -> Configure -> Convert to maven
  2. 그럼 프로젝트 안에 ‘pom.xml’이라는 파일이 생긴다.
  3. ‘pom.xml’에서 depencies태그 안에 원하는 내용을 추가한다.

2. Lombok (롬복)

코드 다이어트 라이브러리(API)로, getter/setter/toString 같은 매서드의 생성을 쉽게 할 수 있게 해준다. 이때 어노테이션(파이썬에서는 데코레이션이나 장식자라고도 부름)이라고 불리는 엣 ‘@’을 이용한다. 만약 ‘@Data’ 다음과 같이 입력하면 자동으로 ‘import lombok:Data;’라는 코드가 작성되고 인스턴스변수에 관한 get/set함수가 생김을 outline탭을 통해 확인할 수 있다.

좋은 점으로는 변수를 생성하거나 제거할 때마다 자동으로 get/set함수 등도 생성/제거 된다.

2.1 Getter/Setter의 필요성

수업을 진행하는 도중 왜 굳이 getter와 setter메서드를 통해 클래스의 변수값을 받거나 설정해주는지 궁금했다. 단순히 dot을 이용해 진행하면 되지 않는가라는 궁금증이었다.

이에 대해 강사님은 getter나 setter같은 메서드를 만들고 이 곳에서 세부조건이나 제약을 걸어서 입력값의 범위설정같은 기능을 추가하기 용이하기 때문이라고 설명해주셨다.

ex) 여성용 쇼핑몰 회원가입

public class Customer {
	private String id;
	private int pw;
	private char gender; //성별은 무조건 'F' 가 들어와야 할 때
	
	public Customer(String id, int pw, char gender){
		this.id=id;
		this.pw=pw;
		setGender(gender); ///!!!!!여기가 중요한 부분
	}

	public void setGender(char gender) {
		if(gender == 'F') {
			this.gender=gender;
		}else {
			System.out.println("잘못된성별입니다");
		}
	}
}

위 코드는 private으로 변수들을 보호하는 기능 + customer객체를 선언할 때 제대로 된 성별이 들어와야만 객체가 생성되게 하는 기능이 추가된 것이다.

3. JUnit (단위테스트)

소스코드를 작성하다보면 부분만 테스트해보고 싶을 때가 있다. 지금은 이클립스를 이용해 자바소스코드를 작성 중이어서 main메서드가 있는 부분을 통해 소스코드를 실행하므로 main메서드 안에 있는 모든 코드가 실행이 된다. 하지만 코드가 길어질 경우 나중에 작성한 코드만을 확인해야 할 경우가 생기므로 이럴 때 이용하는 것이 JUnit 프레임워크다.( 파이썬은 XUnit )

롬복과 비슷하게 어노테이션을 사용한다. 단위테스트가 필요한 부분 위에 ‘@Test’다음 코드를 작성하면 자동으로 JUnit라이브러리가 import되고 소스코드 상에서 마우스 우클릭을 하여 ‘Run as - JUnit Test’을 클릭해주면 JUnit에 대한 탭이 열리며 단위 테스트 결과가 출력된다.

results matching ""

    No results matching ""