테스트 NG

TestNG
테스트 NG
개발자Cedric Beust, TestNG 팀
안정된 릴리스
7.3.0 / 2020년 9월 19일, 20개월 전(2020-09-19)[1]
저장소
기입처자바
운영 체제크로스 플랫폼
유형유닛 테스트 도구
면허증.Apache 라이센스 2[2].0
웹 사이트testng.org

TestNG는 Cedric Beust가 만들고 JUnitNUnit에서 영감을 얻은 Java 프로그래밍 언어의 테스트 프레임워크입니다.TestNG의 설계 목표는 보다 강력하고 사용하기 쉬운 기능으로 유닛, 기능, 엔드 투 엔드, 통합 등 광범위한 테스트 카테고리를 커버하는 것입니다.

특징들

TestNG의 주요 기능은 다음과 같습니다.

  1. 주석 지원.
  2. 데이터 기반/파라미터화 테스트 지원(와 함께)@DataProvider및/또는 XML 구성).
  3. 동일한 테스트 클래스의 여러 인스턴스 지원(와 함께)@Factory)
  4. 유연한 실행 모델.테스트 NG는 build.xml을 통해 Ant에 의해 실행되거나(테스트 스위트가 정의되어 있는지 여부에 관계없이), 시각적인 결과가 있는 IDE 플러그인으로 실행할 수 있습니다.이 없습니다.TestSuite클래스는 테스트 스위트, 그룹 및 테스트를 실행하도록 선택한 경우 XML 파일로 정의 및 구성합니다.
  5. 동시 테스트: 다양한 정책을 사용할 수 있는 임의의 큰 스레드 풀(각 스레드 내의 모든 메서드, 테스트 클래스당 1 스레드 등)에서 테스트를 실행하여 코드가 멀티 스레드 세이프한지 여부를 테스트합니다.
  6. BeanShell을 내장하여 유연성을 높입니다.
  7. 런타임 및 로깅 기본 JDK 기능(의존관계 없음)
  8. 응용 프로그램 서버 [clarification needed]테스트에 대한 종속 메서드입니다.
  9. 분산 테스트: 슬레이브 머신에 테스트를 배포할 수 있습니다.


데이터 프로바이더

TestNG의 데이터 프로바이더는 테스트클래스의 메서드로 다양한 실제 값의 배열을 의존적인 테스트 메서드에 제공합니다.

예:

 //이 메서드는 데이터 공급자의 이름이 "provider 1"임을 선언하는 모든 테스트 메서드에 데이터를 제공합니다.   @DataProvider(이름. = "param1")  일반의 물건[][] create Data 1() {   돌아가다 신규 물건[][] {     { "원형", 신규 정수(36) },    { '앤', 신규 정수(37) }   };  }   // 이 테스트 방법은 "provider1"이라는 이름의 데이터 공급자가 해당 데이터를 제공해야 함을 선언합니다.  @테스트(데이터 프로바이더 = "param1")  일반의 무효 verify Data 1(스트링 n1, 정수 n2) {   시스템..나가..인쇄(n1 + " " + n2);  }   // 매개 변수 배열의 반복기를 반환하는 데이터 공급자입니다.  @DataProvider(이름. = "param2")  일반의 반복기< >물건[ ] > create Data (create Data(데이터 생성)() {   돌아가다 신규 마이 아이테레이터(...);  }    // java.lang.reflect 형식의 인수를 가진 데이터 공급자.방법.  // 여러 테스트 방법이 동일한 경우 특히 유용합니다.  // 프로바이더에 따라 다른 값을 반환하는 경우  // 서비스 중인 테스트 방법.   @DataProvider(이름. = "param3")  일반의 물건[][] create Data (create Data(데이터 생성)(방법 m) {   시스템..나가..인쇄(m.getName());    돌아가다 신규 물건[][] { 신규 물건[] { "원형" } };  } 

반환되는 데이터 공급자의 유형은 다음 두 가지 유형 중 하나입니다.

  • 오브젝트 배열(Object[][]). 여기서 첫 번째 치수의 크기는 테스트 메서드를 호출하는 횟수입니다.두 번째 치수 크기에는 테스트 메서드의 파라미터 유형과 호환되어야 하는 오브젝트 배열이 포함됩니다.
  • Iterator<Object[]>와의 유일한 차이점은Object[][]Iterator를 사용하면 테스트 데이터를 쉽게 생성할 수 있습니다.TestNG는 이 반복기에서 반환된 파라미터를 사용하여 반복기를 호출한 후 테스트 메서드를 하나씩 호출합니다.메서드에 전달할 매개 변수 세트가 많이 있고 모든 매개 변수 세트를 미리 작성하지 않을 경우 특히 유용합니다.

도구 지원

TestNG는 Eclipse, IntelliJ IDEA NetBeans의 3대 Java IDE에서 즉시 또는 플러그인을 통해 지원됩니다.또한 Apache Ant용 커스텀 태스크가 포함되어 있으며 Maven 빌드 시스템에서 지원됩니다.Hudson Continuous Integration Server는 TestNG를 기본적으로 지원하며 테스트 결과를 추적하고 시간에 따라 차트를 작성할 수 있습니다.Cobertura 등 대부분의 Java 코드 커버리지 툴은 TestNG와 심리스하게 연동됩니다.

참고: Eclipse에 대한 TestNG 지원은 2018-09(4.9) 이전 버전의 Eclipse Marketplace에만 포함되어 있습니다.Eclipse 이후 버전의 경우 TestNG [3]사이트의 지침에 따라 TestNG를 수동으로 설치해야 합니다.

리포트

TestNG는 HTML 및 XML 형식으로 테스트 보고서를 생성합니다.XML 출력은 Ant JUnit Report[4] 태스크에 의해 변환되어 JUnit 사용 시 얻은 것과 유사한 보고서를 생성할 수 있습니다.버전 4.6 이후 TestNG에서는 ReportNG,[6] PDFngreport[7], TestNG-XSLT [8]등의 서드파티 보고서 생성기를 사용할 수 있는 Reporter[5] API도 제공됩니다.

JUnit과의 비교

TestNG는 다른 테스트 툴인 JUnit과 오랜 경쟁 관계를 맺고 있습니다.각 프레임워크에는 차이점과 장점이 있습니다.스택 오버플로우 논의는 이 [9][10][11]문제를 반영합니다.

주석

JUnit 5에서는 대부분의 [12]경우 @BeforeAll 메서드와 @AfterAll 메서드는 스태틱으로 선언해야 합니다.TestNG에는 이 제약이 없습니다.

TestNG에는 테스트 스위트 및 그룹에 대한 4개의 추가 설정/해체 주석 쌍(@BeforeSuite, @BeforeTest, @AfterTest, @BeforeGroup 및 @AfterGroup, @BeforeMethod 및 @AfterMethod)이 포함됩니다.또한 TestNG는 셀레늄을 사용한 애플리케이션 테스트 자동화를 지원합니다.

파라미터화 테스트

파라미터화된 테스트는 두 도구 모두 구현되지만 방법은 상당히 다릅니다.

TestNG에는 testng.xml을 설정하고 @DataProvider 메서드를 정의하는 두 가지 방법이 있습니다.[13]

JUnit 5에서는 @Parameterized가테스트 주석을 사용하여 파라미터화된 테스트를 수행할 수 있습니다.이 주석은 @ValueSource 또는 @EnumSource 같이 파라미터화된 인수의 소스를 선언하는 다른 주석과 결합됩니다.@ArgumentsSource를 사용하면 사용자는 보다 역동적인 기능을 구현할 수 있습니다.ArgumentsProviderJUnit 4에서는 @RunWith@Parameters를 사용하여 파라미터화된 테스트를 용이하게 합니다.@Parameters 메서드는 parameters를 반환해야 합니다.[14]List[]매개 변수화된 값을 사용하여 테스트 클래스 생성자로 공급됩니다.

결론

여러 사용자가 어떤 프레임워크의 특정 기능을 선호하는 경우가 많습니다.JUnit은 더 널리 보급되어 있으며, 많은 경우 기본적으로는 메인스트림 IDE와 함께 출고됩니다.TestNG는 다양한 종류의 테스트를 위한 추가 구성 옵션 및 기능으로 알려져 있습니다.어떤 것이 더 적합한지는 사용 상황 및 요건에 따라 달라집니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ 프로젝트 GitHub 릴리즈 페이지
  2. ^ "Apache License Version 2.0". January 2004. Archived from the original on 2013-12-21.
  3. ^ "TestNG for Eclipse".
  4. ^ JUnitReport 2010-02-24 Wayback 머신에서 아카이브 완료
  5. ^ TestNG 4.6 발표
  6. ^ ReportNG 1.0 최종 출시
  7. ^ PDFng report 1.0.0
  8. ^ TestNG XSL 보고서
  9. ^ "Junit vs TestNG". stackoverflow.com.
  10. ^ "JUnit vs TestNG". stackoverflow.com. Archived from the original on 2014-02-02.
  11. ^ "Which UnitTest framework to learn for Java now?". stackoverflow.com.
  12. ^ "Writing Tests - Annotations". junit.org.
  13. ^ "What is TestNG?". qacreators.com.
  14. ^ "JUnit 5 User Guide". junit.org.


외부 링크