1. JUnit ?
JUnit은 자바로 개발된 소프트웨어에 사용하는 단위 테스팅(unit-testing) 프레임 워크 입니다.
단위 테스팅 프레임 워크로 자바의 JUnit만 있는게 아닙니다. C, C++과 같은 다른 언어들도 단위 테스트를 위한 프레임워크가 존재합니다.
자바의 단위 테스팅 프레임워크가 JUnit인 것 처럼 다른 언어들도 (언어)Unit으로 존재합니다.
각 언어별 테스팅 프레임워크는 다음과 같습니다.
언어 |
프레임워크 |
C |
CUnit |
C++ |
CppUnit |
Python |
PyUnit |
PHP |
PHPUnit |
C는 CUnit, C++는 CppUnit을 사용하시면 되고, Python은 PyUnit, PHP는 PHPUnit을 사용하시면 됩니다.
각 프레임워크마다 언어 이름이 들어있어 구분하기 쉽습니다.
2. JUnit4의 특징
JUnit4의 특징은 다음과 같습니다.
1. Java5의 어노테이션을 지원합니다.
메소드의 이름이 test로 시작해야 한다는 제약이 해소되었습니다.
테스트를 위한 메소드에는 @Test를 붙입니다.
2. 전보다 더 유연한 픽스처를 제공합니다.
@BeforeClass, @AfterClass, @Before, @After
3. 예외 테스트를 제공합니다.
@Test(expected=NumberFormatException.class)
4. 시간 제한 테스트를 제공합니다.
@Test(timeout=2000)
5. 테스트 무시를 제공합니다.
@Ignore(“”)
6. 배열 비교를 지원합니다.
assertArrayEquals([message], expected, actual);
7. @RunWith(클래스 이름.class)
JUnit Test 클래스를 실행하기 위한 러너(Runner)를 명시적으로 지정합니다.
@RunWith는 junit.runner.Runner를 구현한 외부 클래스를 인자로 갖습니다.
8. @SuiteClasses(Class[])
보통 여러 개의 테스트 클래스를 수행하기 위해 쓰입니다. @RunWith를 이용해 Suite.class를 러너로 사용합니다.
9. 파라미터를 이용한 테스트를 제공합니다.
-@RunWith(Parameterized.class)
-@Parameters
-public static Collection data() {
}
* Junit4 어노테이션
JUnit 테스트케이스 함수에 아래와 같은 어노테이션을 붙이면 편리한 기능을 사용할 수 있습니다.
@BeforeClass : static 메소드여야 하며, 테스트 클래스 내에서 수행 전 한 번만 실행합니다.
@AfterClass : static 메소드여야 하며, 테스트 클래스 내에서 수행 후 한 번만 실행합니다.
@Before : 테스트 케이스 수행 전에 반복해서 실행합니다.
@After : 테스트 케이스 수행 후에 반복해서 실행합니다.
@Test : 테스트를 수행합니다.
~~Class가 있는 Before, After는 클래스에서 딱 1번만 실행되고 Class가 없는 Before, After는 모든 케이스 시작 전에 반복해서 실행됩니다.
3. JUnit 테스트 흐름
setup() : 테스트 대상 클래스의 실행 전에 setup()을 실행합니다.
이 setup()에는 테스트를 수행하기 전 여러가지 세팅을 할때 사용합니다. 예를 들어 디비에 연결한다고 했을때 Connection 생성 및 연결과 같은 작업을 수행해주면 됩니다. 모든 테스트에 setup()이 필요하다면 @Before을 붙여주면 됩니다.
tearDown() : 모든 테스트를 수행한 후 마지막에 수행시키고자 하는 작업들을 tearDown()에 구현해주면 됩니다. setup()에서 디비연결 작업을 수행했으니 tearDown에서는 Connection을 반납하는 것과 같은 마무리 작업을 수행하면 되겠습니다. 역시 마찬가지로 @Before로 디비를 연결하는 setup()을 수행했다면 teardown엔 @After로 모든 케이스마다 수행되도록 해줘야합니다.
흐름은 다음과 같습니다.
setup() -> 테스트 케이스 함수 -> tearDown() -> setup() -> 테스트 케이스 함수 -> tearDown() ..... 반복
물론 @Before나 @After를 사용하지 않는다면 위와 같은 흐름으로 진행되지는 않을 것입니다.
4. JUnit 메소드
그럼 이제 테스트를 위해 입력과 테스트 결과를 비교할 수 있는 JUnit 메소드를 보겠습니다.
JUnit에서는 단순한 값 비교뿐만 아니라 다른 방식들도 제공합니다. 객체와 객체가 같은지 비교한다던지 배열끼리 비교한다던지 하는 방식도 제공합니다. 여러가지 상황에 맞게 사용하시면 됩니다.
assertArrayEquals(a,b) 배열 a와 b가 같음을 나타냅니다.
assertEquals(a,b) 객체 a와b의 값이 같음을 나타냅니다.
assertSame(a,b) 객체 a와b가 같은 객체임을 나타냅니다.
assertTrue(a) a가 true라는 것을 나타냅니다.
assertFalse(a) a가 false라는 것을 나타냅니다.
assertNotNull(a) a객체가 Null이 아님을 나타냅니다.
대부분의 경우 assertEquals()를 많이 사용합니다.
Assert.assertEquals(...) 이렇게 사용하시면 됩니다.
이상으로 소개를 마치고 다음 포스팅부터 어떻게 사용하는지 사용법에 대해 포스팅해보겠습니다.
'IT > Testing' 카테고리의 다른 글
V모델과 단계별 테스팅 (0) | 2017.12.14 |
---|---|
ISTQB 자격증 소개 및 시험 준비 팁 (0) | 2017.12.12 |
JUnit - private 메소드, 변수 테스트하는 법 (0) | 2017.12.10 |
테스팅 용어 정리 (0) | 2017.12.04 |