반응형

1. JUnit이란

JUnit은 Java를 위한 오픈 소스 테스트 프레임워크다.


2. 단위 테스트와 기능 테스트

단위테스트 : 각 클래스에 포함된 메서드가 제대로 동작하는지를 테스트

기능테스트 : 스프트웨어 전체가 제대로 동작하는지를 확인


3. Eclipse에서 JUnit을 사용하는 방법 (단위 테스트)

먼저 'JUnitExample' 이라는 이름으로 테스트 프로젝트를 만들고, BasicOperations 클래스를 만들어 본다.



JUnit을 사용하여 BasicOperation 클래스를 테스트하기 위해서는 테스트 케이스를 만들어야한다.

BasicOperation 클래스와 분리되어 있는 것이 편할테니 먼저 테스트 케이스를 위한 별도의 패키지를 만들어준다.

패키지를 만들고, File> New> JUnit Test Case를 선택하고, Dialog가 출력될것이다. 거기서 New JUnit 4 test를 선택하고 Next를 선택한다.

다른 값은 자동으로 입력된다. (BasicOperation 클래스를 선택하고 우클릭으로 만들엇을때)


Next를 누르면, 테스트하려는 메서드를 선택할 수 있고, 선택한 메서드를 테스트하는 메서드를 자동으로 생성해준다.

다이얼로그 중간에 setUpBeforeClass(), tearDownAfterClass(), setUp(), tearDown() 메서드 스텁을 만들지 여부를 묻는 체크박스가 있다.

1) setUp() : 테스트 케이스가 실행되기전에 필요한작업을 처리

2) tearDown() : 테스트 케이스의 실행이 끝난 다음에 실행

3) setUpBeforeClass(), tearDownAfterClass() : 테스트가 실행될때 한번씩 앞뒤로 실행

필요한 메서드를 선택하고, Finish를 선택하면 JUnit4 라이브러리를 현재 프로젝트의 빌드 패스에 포함시킬지를 묻는 다이얼로그가 나온다. 기본적으로 Perform the following action 이 디폴트로 선택된다.


테스트 클래스를 만들었으면, 각 메서드 앞부분에 모두 test가 붙어있고, 그뒤는 BasicOperations의 클래스의 메소드명이 붙어있다.

해당 메소드를 테스트 하겟다는 뜻이다. JUnit4에서는 테스트 메서드를 언노테이션(@Test같이 @처리된것)으로 표시함으로 테스트 

메서드 이름이 test로 시작할 필요는 없지만 자동 생성된 코드는 관례상 앞에 test를 붙인듯하다.


assertEquals(3, BasicOperations.add(1,2));


BasicOperations에 add는 더하는 작업을 하는 메소드로 1+2를 작업하여 리턴은 3이 나올것이다.

JUnit의 단위테스틑 이렇다, 1이랑 2을 넣고, 3이 나오는지 확인...

이런식으로 인자 전달 하고, 예상되는 값을 작성하고, 실행을 해보겠다.


Run> Run As> JUnit Test 를선택하는 방법과, test메소드를 선택하고 툴바에서 Run As> JUnit Test를 선택하여 실행 할 수도 있다.

정상적으로 실행되었다면 아래와 같은 화면이 출력되고, 테스트는 종료된다...



추가...

앞에서 말했던 언노테이션(@Test)가 있었는데..

사용자가 아래와 같이 입력해도 테스트가 가능하다.

@Test

public void aaa(){

bbb();

}


public void bbb(){

assertEquals(3, BasicOperations.add(1,2));

}


@Test만 있으면 테스트를 함수명을 보지않고, 언노테이션만 있으면 테스트 가능하다.


4. TestCase와 TestSuite

앞에 3번에 봤던 TestCase를 한꺼번에 실행시키는 방법이 있는데, 바로 테스트 스위트를 사용하는 것이다.

JUnit3까지는 테스트 스위트가 컴포지트(Composite) 패턴으로 되어 있고, 테스트할 클래스를 테스트 스위트에 추가하는 형태로 테스트 스위트를 만들었다.

JUnit4에서는 어노테이션을 사용한다.


File> New> Other를 선택하거나, Ctrl N을 선택하면 New 다이얼로그가 뜨는데, JUnit에 JUnit Test Suite를 선택한다.



테스트 클래스를 한번에 돌리는 것으로, 내 코드에서는 Test가 두개 임으로 두개가 한번에 선택이 되어있다.

Finish를 누르면 클래스가 자동으로 생성되고, 실행방법은 3번에서 했던 실행방법과 동일하다.(AllTests.java를 선택하고, 마우스 우클릭> Run As > JUnit Test 선택)


테스트가 끝나면 아래와 같이 출력되며, 각 메소드의 정상 유무를 한눈에 파악할 수 있다.




반응형

'Java > Java' 카테고리의 다른 글

Ant를 이용한 빌드 자동화  (0) 2014.05.12
리팩터링  (0) 2014.05.09
Java  (0) 2014.03.27
참조변수와 인스턴스  (0) 2013.12.20
디자인패턴  (0) 2013.12.12

+ Recent posts