junit(unit test)dslab.konkuk.ac.kr/class/2010/10sv/practice/1/junit...junit •x-unit project line...
TRANSCRIPT
![Page 1: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/1.jpg)
JUnit(Unit Test)
Team 1200310394 남장우200412342 이종훈
![Page 2: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/2.jpg)
Contents
1. UnitTest
• Unit Test
• Unit Test
Diagram
2. JUnit
• JUnit
• JUnit Test Code
• JUnit Test
Routine
3. JUnit Example
• JUnit Example(1)
• JUnit Example(2)
• JUnit Example(3)
4. JUnit & Friends
• JUnit & Friends
• TestNG
• JUnit VS. TestNG
5. Q & A
• Reference
![Page 3: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/3.jpg)
1. UNIT TESTJUnit
![Page 4: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/4.jpg)
Unit Test
• 테스트 대상이 되는 코드 기능의 아주 작은 특정 영역, 즉
개발자가 작성한 코드조각을 Test (대개 특정 상황에서의
특정 메서드를 Test해 본다.)
Unit Test
• 개발자가 작성한 어떤 코드의 조각이 코드작성의 의도대
로 동작하는지 증명하기 위해 수행 한다.
• 개발단계부터 효율적인 테스팅을 행하여 전체 프로젝트
진행시간을 단축시키고 결함 수정이 용이하기 때문에 수
행한다.
Why
![Page 5: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/5.jpg)
Unit Test (Cont’d)
Cf. TDD(Test-driven Development, 테스트 주도 개발)자동화된 테스트로 개발을 이끌어 가는 개발 방식을 테스트 주도 개발이
라 부른다. TDD는 분석 기술이며, 설계 기술이며, 개발의 모든 활동을 구조화하는 기술이다.
테스트 주도 개발에서는 아래의 두 가지 규칙만 따른다1. 오직 자동화된 테스트가 실패했을 경우에만 새로운 코드를 작성한다.2. 중복을 제거한다.
• 모든 메서드를 테스트 하는것이 아니라 상식 수준의 확인을
통해 단위 코드가 의도한 대로 동작하는지 여부를 판단하는
단계이다. 물론 많은 양의 코드를 테스트 하는것이 좋다.
• 이상적으로는 코딩 전에 테스트 케이스를 작성하여 구현시
보조자료로 활용하는 것이 좋다. ( TDD 기법 )
Good Unit Test
![Page 6: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/6.jpg)
Unit Test (Cont’d)
• Right-BICEP
• Right - 결과가 옳은가?
• B - 모든 경계('B'oundary) 조건이 correct 한가?
<경계 조건에서 확인해봐야 할 사항들 - 'CORRECT'>
• 형식 일치('C'onformance) – 값이 기대한 형식과 일치 하는가?
예) 최상위 도메인 이름이 없는 이메일 주소 fred@foobar 이 넘어온다면?)
• 순서('O'rdering) – 적절히 순서대로 되어 있거나 그렇지 않은 값인가?
• 범위('R'ange) – 적당한 최소값과 최대값 사이에 있는 값인가?
• 참조('R'eference) – 코드가 자기가 직접 제어하지 않는 외부 코드를 참조하는가?
• 존재성('E'xistance) – 값이 존재 하는가?
• 개체 수('C'ardinality) – 확실히 충분한 값이 존재하는가? 개수를 정확히 필요한 만큼 갖고 있다던가, 정확
히 필요한 만큼 만들었다는 것을 확인해야 한다.
• 시간 ('T'ime) (절대적으로 그리고 상대적으로) – 모든 것이 순서대로 일어나는가? 제시간에? 때 맞추어?
• I - 역('I'nverse) 관계를 확인할 수 있는가?
• C - 다른 수단을 사용해서 결과를 교차 확인('c'ross-check) 할 수 있는가?
• E - 에러조건('e'rror condition)을 강제로 만들어 낼 수 있는가?
• P - 성능('P'erformance) 특성이 한계 내에 있는가?
그렇다면 무엇을 테스트할것인가?
![Page 7: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/7.jpg)
Unit Test (Cont’d)
• 성능의 테스트에 중점을 두지 않고, 단지 해당 코드가
의도대로 동작하는지 테스트 하고, 해당 부분들이 의도
대로 동작한다는 확신을 쌓아 그것들을 조립하여 전체
동작 시스템을 테스트 하는 단계로 나아가는 것.
Goal
![Page 8: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/8.jpg)
Unit Test Diagram
Unit Test Diagram
테스트 프레임워크실행
코드조각Success/Fail
예측 가능한실행결과 값
![Page 9: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/9.jpg)
2. JUNITJUnit
![Page 10: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/10.jpg)
JUnit
그럼 테스트하는 모든 조각코드에 main메서드를 붙여야하나? 그것이 가능한가?
JAVA코드는 콘솔 실행을 위해선 main 메서드가 필요하다.
테스트하려면 실행을 시키고 결과값을 비교해야한다.
Unit Test는 큰 코드 내의 작은 조각을 테스트한다.
![Page 11: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/11.jpg)
JUnit
• X-Unit Project Line up중 JAVA언어로 작성된 코드를 Unit Test하기
위한 Tool이다.
• main이 아닌 메서드를 테스트 하기 위해 테스트를 도와주는
Framework이다.
• JUnit이 가지고 있는 Runner를 통해 테스트를 진행
JUnit
• Version : JUnit 4.8.1 (2009. 12. 8)
• 4.0 버전이상에서 JAVA 5의 @(어노테이션)기능을 활용하여 좀 더
쉽게 테스트 코드를 작성할 수 있게 되었다.
Current
![Page 12: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/12.jpg)
JUnit Test Code
![Page 13: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/13.jpg)
JUnit Test Code (Cont’d)
• 변수 혹은 객체 두 개의 값이 같은지 검사한다.
• 어떤 형의 객체이던 동일성 테스트를 할 수 있다.
assertEquals([String message], expected, actual)
• 두 객체가 같은 인스턴스 인지 검사한다.
assertSame([String message], Object expected, Object actual)
• 두 객체가 다른 인스턴스 인지 검사한다.
assertNotSame([String message], Object expected, Object actual)
Cf. Expected는 기대값이고 actual 은 테스트 대상이 된코드에서 실제로 나오는 값이다.또, message는 테스트가 실패할 경우 failure trace에 출력될 문자열 매개 변수이며 생략할 수 있다.
![Page 14: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/14.jpg)
JUnit Test Code (Cont’d)
• 해당 객체가 Null값인지 검사한다.
assertNull([String message], Object object)
• 해당 객체가 Null이 아닌지 검사한다.
assertNotNull([String message], Object object)
• 조건문이 true인지 검사한다.
assertTrue([String message], boolean condition)
• 조건문이 false인지 검사한다.
assertFalse([String message], boolean condition)
![Page 15: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/15.jpg)
JUnit Test Code (Cont’d)
• Junit 4.x이상에서는 TestCase 클래스를 상속하지 않고 @Test라는
어노테이션을 사용하여 테스트클래스로 인식한다.
@Test
• 파라미터로 ms단위의 timeout을 지정하여 해당 테스트 메서드가
이를 초과하면 fail처리 한다.
@Test(timeout)
• try/catch문이 없는 상황에서 예외상황이 발생하였을 때 테스트를
중지하지 않고 해당 예외 발생시 계속 테스트를 진행한다.
@Test(expected)
![Page 16: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/16.jpg)
JUnit Test Code (Cont’d)
• 프레임워크에 지정된 러너가 아닌 사용자가 지정된 러너를 통해 특정 클래스를 손쉽
게 실행할 수 있게 해준다.
@RunWith
• 테스트할 클래스 목록을 지정한다.
@SuiteClasses
• JUnit에서는 테스트 메소드에 직접 파라미터를 넘길 수 없으므로, 매개변수 없는 테스
트 메소드를 작성한다. @Parameter로 파라미터 제공 메소드로 정의한다.
• 제공되는 파라미터를 받아 처리하는 생성자를 작성한다.
• 클래스 수준에서 테스트가 Parameterized 클래스와 함께 실행되도록 @RunWith 주석
을 지정한다.
@Parameters
Suite? Junit의 Suite는 여러 클래스를 한번에 테스팅 할 때 사용한다.
![Page 17: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/17.jpg)
JUnit Test Code (Cont’d)
• 바로 다음의 테스트를 무시한다. comment는 개발자가 해당 테스
트를 무시하는 이유를 작성하여 알아보기 쉽게 한다.(일종의 주석
처리)
@Ignore(comment)
• 각 테스트를 진행하기 전에 테스트 중에 공통으로 사용하는 객체
들을 초기화하고 릴리즈 하기 위한 방법이다.
@Before, @After
• @Before, @After와 비슷하며, 모든 테스트 동안 단 한번만 호출
하고자 할 때 사용한다.
@BeforeClass, @AfterClass
![Page 18: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/18.jpg)
3. EXAMPLEJUnit
![Page 19: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/19.jpg)
JUnit Example(1)Te
st C
ode
Exam
ple
(ass
ertion)
import org.junit.Assert;import org.junit.Test;import prac01.Hello;
public class HelloTest {@Testpublic void Test() {
Hello hello = new Hello();//return value://hello.calc1() = 30//hello.calc2() = 25//hello.calc3() = 22
String[] array1 = {"a", "b", "c"};String[] array2 = {"a", "b", "c"};String[] array3 = {"a", "b", "d"};
// AssertionAssert.assertNotSame(hello.calc1(), hello.calc2()); //successAssert.assertNotNull("hello is not null.", hello); //successAssert.assertTrue(hello.calc1() == 30); //successAssert.assertEquals(array1, array2); //successAssert.assertEquals("Not Equal", array1, array3); //fail
}}
![Page 20: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/20.jpg)
JUnit Example(1) (Cont’d)
![Page 21: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/21.jpg)
JUnit Example(1) (Cont’d)
![Page 22: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/22.jpg)
JUnit Example(2)Te
st C
ode
Exam
ple
(fix
ture
)
import org.junit.*;public class TestFixture {
private int x;
@Beforepublic void init() {
x = 20;}
@Afterpublic void release() {
x = 0;}
@Testpublic void countOne() {
for (int i = 0; i < 100; i++) {x++;
}System.out.println("countOnes's x=" + x);
}
*@Ignore@Testpublic void countTwo() {
for (int i = 0; i < 10; i++) {x++;
}System.out.println("countTwo's x=" + x);
}}
![Page 23: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/23.jpg)
JUnit Example(2) (Cont’d)
![Page 24: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/24.jpg)
JUnit Example(2) (Cont’d)
![Page 25: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/25.jpg)
JUnit Example(3)Te
st C
ode
Exam
ple
(par
amet
ers)
import java.util.Arrays;import java.util.Collection;
import org.junit.*;import org.junit.runner.RunWith;import org.junit.runners.Parameterized;import org.junit.runners.Parameterized.Parameters;
public class TestParam {
@RunWith(Parameterized.class)public static class FibonacciTest {
@Parameterspublic static Collection data() {
return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 },{ 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
});}
private int fInput;private int fExpected;
public FibonacciTest(int input, intexpected) {
fInput = input;fExpected = expected;
}@Testpublic void test() {
Assert.assertEquals(fExpected, Fibonacci.compute(fInput));
}}
}
![Page 26: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/26.jpg)
JUnit Example(3) (Cont’d)
![Page 27: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/27.jpg)
4. JUNIT & FRIENDSJUnit
![Page 28: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/28.jpg)
JUnit & Friends
Unit Test
JAVA
JUnit TestNG JTiger
C
Gunit CUT Check
Objective-
C
ObjcUnit OCUnit
.NET
Nunit
DB
DBUnit
ETC
…….
![Page 29: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/29.jpg)
TestNG
• JUnit 3.x버전시 개발된 Test Tool로 Junit 3.x 버전이 안고있는 문제점들을 파악하고 좀
더 개발자에게 단순하고 확장성있고, 실용적인 테스팅 도구를 제공하기 위해 개발된
Unit Test Tool이다.
• Unit Test만이 아닌 통합/기능테스트 기능도 포함하고 있다.
TestNG
• JAVA언어는 단일상속이기 때문에 TestCase클래스를 확장할 필요성이 매우 제한적이
다.(3.x버전)
• 매개변수들을 JUnit의 테스트 메소드에 전달하는 것과 setUp() 과 tearDown() 메소드
에 전달하는 것은 불가능하다.
• 실행 모델이 익숙하지 않다: 테스트클래스는 테스트 메소드가 실행될 때 마다 다시 인
스턴스화된다.
• 복잡한 프로젝트에서 다른 테스트 suite의 관리는 트릭을 많이 써야 한다.
• 위의 문제점들은 Junit도 4.x버전이 릴리즈되면서 모두 상쇄시킨 문제점들이다.
TestNG가 파악한 JUnit의 문제점
![Page 30: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/30.jpg)
TestNG (Cont’d)
• XML을 이용하기 때문에 확장 및 변경이 용이하다.
• Test후 자동으로 HTML로 리포트를 생성해준다.
• Test그룹화하여 그룹화 되어있는 메소드들만 Testing할 수 있다.
TestNG의 장점
• 많은 기능을 제공하긴 하지만 그마만큼 초심자가 사용하기엔
어려울 수 있다.
• 많은 유형의 Annotation을 지원하기 때문에 자칫 테스팅 코드
가 복잡해 질 수 있다.
TestNG의 단점
![Page 31: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/31.jpg)
TestNG (Cont’d)
• afterTestClass : true일 때, test Class실행 완료 후에 실행
• afterTestMethod : true일 때, test Method실행 완료 후에 실행
• beforeTestClass : true일 때, test Class실행 전에 실행
• beforeTestMethod : true일 때, test Method실행 전에 실행
@Configuration
• Test Method 실행 시 발생할 Exception List 지정
@ExpectedExceptions
• enable : false일 때, test진행 시 제외된다.
• groups : Class, Method를 특정 Group에 포함시킨다. Suite에서 Group별 설정이
가능하다.
@Test
![Page 32: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/32.jpg)
TestNG (Cont’d)
TestNG Test Class Life Cycle
![Page 33: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/33.jpg)
JUnit VS. TestNG
JUnit TestNG
Junit 3.x버전의 기능 중
불필요하고 어려운 것들
을 쉽게 바꿔 릴리즈
JAVA의 Annotation기능을
먼저 사용 편의성 높임
JUnit에 비해 좀 더 유연하
다.
가장 널리 쓰이고 쉽게 쓸
수 있다.
IDE & 타테스팅 도구와의
강력한 호환성을 보임
4.X버전에 와서 사용자의
편의성을 더욱 높여줌
![Page 34: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/34.jpg)
5. Q & AJUnit
![Page 35: JUnit(Unit Test)dslab.konkuk.ac.kr/Class/2010/10SV/Practice/1/Junit...JUnit •X-Unit Project Line up중JAVA언어로작성된코드를Unit Test하기 위한Tool이다. •main이아닌메서드를](https://reader036.vdocuments.net/reader036/viewer/2022062606/5fe0b6f92ec07b29c26070a9/html5/thumbnails/35.jpg)
Reference• WebSite
– http://www.junit.org– http://www.javajigi.net– http://younghoe.info/255– http://www.ibm.com/developerworks/kr/library/tutorial/j-junit4– http://decoder.tistory.com/21– http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=4244&
MAEULNO=4&no=31527&page=1– http://www.java2go.net/blog/66?TSSESSION=26df0dd05f49a9ec27177
f7e386c80aa– http://blog.naver.com/inter999?Redirect=Log&logNo=140047093842
• Text– 실용주의 프로그래머를 위한 단위테스트 with JUnit– 이클립스 프로젝트 필수 유틸리티 Subversion, Ant, JUnit, Trac