2011년 6월 13일 월요일

“Testing, the Next Generation” TestNG - 1

“Testing, the Next Generation” TestNG
TestNG의 특징
TestNG는 기존의 JUnit과 같은 Testing Framework에서 보다 쉽고 강력해진 기능을 제공한다. TestNG는 Unit, Functional, end-to-end, integration 등 모든 Test에서 사용할 수 있다.
1. JDK 5 Annotation
2. 유연성 있는 Test configuration
3. Data-driven testing 지원
4. parameter 지원
5. 강력한 실행모델(더 이상 TestSuite가 필요없다.)
6. 각종 IDE 툴 지원(Eclipse, IDEA, Maven…)

TestNG 설치
DownLoad : http://testng.org/doc/download.html
설치 : 다운받은 파일을 특정 위치에서 압축을 푼다.
테스트 : TestNG가 설치된 후 “ant”로 build.xml을 실행시키면 junit.jar 파일이 없어 “BUILD FAILED”가 발생한다. 이경우에는 3rdparty디렉토리에 Junit.jar파일을 카피하면 된다.

TestNG 첫 번째 Sample
Test Code : TestNG.Test1
package TestNG;
import org.testng.annotations.Configuration;
import org.testng.annotations.ExpectedExceptions;
import org.testng.annotations.Test;
@Test(groups = { "functest" }, enabled = true)
public class Test1
{
@Configuration(beforeTestClass = true)
public static void setupClass()
{
ppp("SETTING UP THE CLASS");
}
@Configuration(afterTestClass = true)
public static void tearDownClass1()
{
ppp("TEARING DOWN THE CLASS PART 1");
}
@Configuration(afterTestClass = true)
public static void tearDownClass2()
{
ppp("TEARING DOWN THE CLASS PART 2");
}
@Configuration(beforeTestMethod = true)
public void beforeTestMethod()
{
ppp("BEFORE METHOD");
}
@Configuration(afterTestMethod = true)
public void afterTestMethod()
{
ppp("AFTER METHOD");
}
@Test(groups = { "odd" })
public void testMethod1()
{
ppp("..... TESTING1");
}
@Test(groups = { "even" })
public void testMethod2()
{
ppp("..... TESTING2");
}
@Test(groups = { "odd" })
public void testMethod3()
{
ppp("..... TESTING3");
}
@Test(groups = { "odd" }, enabled = false)
public void testMethod5()
{
ppp("..... TESTING5");
}
@Test(groups = { "broken" })
public void testBroken()
{
ppp("..... TEST BROKEN");
}
@Test(groups = { "fail" })
@ExpectedExceptions( { NumberFormatException.class,
ArithmeticException.class })
public void throwExpectedException1ShouldPass()
{
throw new NumberFormatException();
}
@Test(groups = { "fail" })
@ExpectedExceptions( { NumberFormatException.class,
ArithmeticException.class })
public void throwExpectedException2ShouldPass()
{
throw new ArithmeticException();
}
@Test(groups = { "fail", "bug" })
public void throwExceptionShouldFail()
{
throw new NumberFormatException();
}
@Test(groups = { "assert" })
public void verifyLastNameShouldFail()
{
assert "Beust".equals("") : "Expected name Beust, found blah";
}
private static void ppp(String s)
{
System.out.println("[Test1] " + s);
}
}


Test Suit : Test.xml
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="Example" >
<test name="Simple example" >
<classes>
<class name="TestNG.Test1" />
</classes>
</test>
</suite>


실행
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
E:workingSpaceArticlesTestNGsrc>set classpath=%classpath%;E:CommonLibtestng-4.5.2testng-4.5.2-jdk15.jar;.
E:workingSpaceArticlesTestNGsrc>javac TestNGTest1.java
E:workingSpaceArticlesTestNGsrc>java org.testng.TestNG Test.xml
===============================================
TestNG.Test1
Total tests run: 8, Failures: 1, Skips: 0
===============================================
Creating E:workingSpaceArticlesTestNGsrctest-outputtoc.html
Creating E:workingSpaceArticlesTestNGsrctest-outputTestNG.Test1.properties
Creating E:workingSpaceArticlesTestNGsrctest-outputindex.html
Creating E:workingSpaceArticlesTestNGsrctest-outputmain.html
Creating E:workingSpaceArticlesTestNGsrctest-outputgroups.html
Creating E:workingSpaceArticlesTestNGsrctest-outputmethods.html
Creating E:workingSpaceArticlesTestNGsrctest-outputclasses.html


설명
Test Code에 사용된 Annotations
Annotation
Attribute
@Configuraton
afterTestClass
true 일 때, test Class 실행 완료 후에 실행
afterTestMethod
true 일 때, test Method 실행 완료 후에 실행
beforeTestClass
true 일 때, test Class 실행 전에 실행
beforeTestMethod
true 일 때, test Method 실행 전에 실행
@ExpectedExceptions
test Method 실행 시 발생할 Exception List 지정
@Test
enable
false 일 때, test 진행 시 제외 된다.
groups
Class, Method을 특정 Group에 포함시킨다. suit에서 Group별 설정이 가능하다.

Test을 실행 후에는 실행 디텍토리 밑에 “test-output”이라는 디렉토리가 생겨서 HTML 형태의 결과 물이 생성된다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...