Book : TDD 실천법과 도구 - 3장 TDD 좀 더 잘하기

Lee·2020년 4월 26일
1

Book

목록 보기
3/5
post-thumbnail

테스트 케이스 클래스의 위치

Maven, Gradle 기반의 Java 프로젝트를 사용할 경우 기본적으로 구성되는 구조이다.
우리는 test 패키지에 테스트 코드와 관련된 리소스 파일을 이용하여 테스트하면 된다.

  • /src/main/java 제품 코드가 들어가는 위치
  • /src/main/resources 제품 코드에서 사용하는 각종 파일, XML 등의 리소스 파일들
  • /src/test/java 테스트 코드가 들어가는 위치
  • /src/test/resources 테스트 코드에서 사용하는 각종 파일, XML 등의 리소스 파일들

테스트 메소드의 작성 방식

테스트 대상 메소드와 이름을 1:1로 일치

테스트 대상 코드

public int getBalance() {}

테스트 코드

@Test
public void testGetBalance() {}

대상이 되는 클래스의 메소드와 1:1로 연관지어 생각할 수 있는 장점이 있는 반면에 테스트 케이스가 하나의 테스트 메소드에 존재할 경우, 초반에 있는 테스트 단정문(Assert)이 실패하면 뒤에 오는 단정문에 실행이 보장되지 않음

테스트 대상 메소드의 이름 뒤에 추가적인 정보를 기재

테스트 대상 코드

public void withDraw(int money) {}

테스트 코드

@Test
public void testWithDraw_마이너스통장인출() {}

@Test
public void testWithDraw_잔고가0원일때() {}

기본적으로 테스트 대상 코드의 메소드 단위를 작성한 후, 케이스별로 테스트 메소드를 추가하는 방식이다. 보통 이렇게 작성한다고 하면 상세 케이스들은 메소드 이름 뒤에 밑줄(_)을 붙여 구분한다. 한글을 써도 무방하니 적극 사용하도록 하자

테스트 시나리오에 집중

통합 테스트나 사용자 테스트에 가까운 형태로 테스트 케이스가 필요할 때 사용한다. 작성 대상 클래스의 메소드 구현을 위해 사용한다기보단 테스트 시나리오에 집중해서 대상 클래스 자체의 통합적인 기능을 테스트할 때 사용한다.

필자가 이해한 바로는 테스트 대상이 메소드 단위가 아닌 클래스인 경우 러프하게 테스트 메소드를 작성할 때 사용할 것 같다. 🤔

예시를 보자

public class 환승테스트 {
	@Test
	public void 평일_30분이내에_환승_성공한다(){
	// 테스트 케이스
	}
	@Test
	public void 평일_30분이후에_환승_실패한다(){
	// 테스트 케이스
	시나리오가 대상이 된다. 
	}
}

예시와 같이 선조건 -> 수행 -> 예상결과 식의 테스트 시나리오를 갖는다.

0개의 댓글