JUnit을 이용한 테스트 사용법

서형준·2021년 5월 10일
0

자바 웹 프로그래밍 Next Step을 공부하는데 테스트는 개발자가 갖추어야 할 중요한 역량이라는 것을 깨닫고 평소 main()메소드를 활용하여 콘솔에 통해 테스트를 했습니다. 하지만 많은 문제점이 있었는데 이번에 JUnit를 활용해 main()메소드 문제점을 극복하기위해 사용법을 알아보겠습니다.

일단 첫번째로 간단한 프로덕션 코드를 만들어야 합니다.숫자 두개를 더하는 Sum 클래스를 만들었습니다.

public class Sum {
	
	public int add(int input1,int input2) {
		return input1+input2;
	}
}

그다음 빨간색을 표시된 아이콘을 누르고 JUnit Test Case를 클릭해줍니다.

그리고 클래스 이름은 접미사로Test를 붙여야합니다.

그러면 다음과 같은 메소드 구조를 가질 것입니다.

public class SumTest {

	@Test
	public void test() {
		Sum sum=new Sum();
		assertEquals(3, sum.add(1, 2));
	}

}

다음과 같이 assertEquals()메소드를 사용하면 결과 값을 눈이 아닌 프로그램을 통해 자동화 할수 있습니다.

JUnit코드를 실행하면 다음과 같이 확인할수 있습니다.

assertEquals()를 제외하고도 true/false 인지를 확인할 수 있는 assertTure(),assertFalse()메소드, 결과 값이 null 유무를 판단할 수 있는 assertNull,assertNotNull()메소드,배열 값이 같은지를 검증하는 assertArrayEquals() 메소드를 제공합니다.

여기서 테스트 코드를 추가하다보면 Sum클래스가 중복이 발생합니다.

public class SumTest {
	private Sum sum=new Sum();
	@Test
	public void test() {
		
		assertEquals(3, sum.add(1, 2));
	}

}

이렇게 구현할 수도 있지만 추천하지 않습니다. 이렇게 필드에서 초기화 하면 다른 테스트에서 값은 변경시키면 값이 달라질 수 있습니다.

public class SumTest {
	private Sum sum;
	
	@Before
	public void setup() {
		sum=new Sum();
	}
	
	@Test
	public void test() {
		
		assertEquals(3, sum.add(1, 2));
	}

}

@Before 애노테이션을 활용해 다음과 같이 구현할 것을 추천합니다.

JUit은 @Before 애노테이션을 제공해 초기화 작업을 하듯이 @After 애노테이션을 제공한다. @After 애노테이션은 메소드 실행이 끝난 후 실행됨으로써 후처리 작업을 담당합니다.

이와같이 애노테이션을 활용하면 매번 초기화, 후처리 작업을 통해 각 테스트 간에 영향을 미치지 않으면서 독립적인 실행이 가능하도록 가능하게 합니다.

지금까지 JUnit에 기본적인 사용법 입니다.

profile
실력있는 Back-End 개발자를 꿈꾸는 서형준입니다.

0개의 댓글