TestNG 튜토리얼
⚡ 스마트 요약
TestNG 차세대입니다 Java 다음과 연동되는 테스트 프레임워크 Selenium 구조화된 자동화, 풍부한 보고 기능 및 병렬 실행을 위한 것입니다. 이 튜토리얼에서는 핵심 어노테이션과 프로젝트 설정에 대해 다룹니다. Eclipse첫 번째 테스트 케이스 작성, HTML 보고서 작성 및 고급 매개변수 사용법을 다룹니다.

TestNG?
TestNG 는 자동화 테스트 프레임워크이며, 여기서 "NG"는 "차세대(Next Generation)"를 의미합니다. TestNG 영감을받은 JUnit 사용 Java 어노테이션(@)을 사용하여 테스트 흐름을 제어합니다. 이는 다음과 같은 문제를 해결합니다. JUnit이전의 한계를 극복하고 다음과 같이 설계되었습니다. 종단 간 테스트 쉬워집니다.
와 TestNG 정확한 보고서를 생성하여 통과, 실패 또는 건너뛴 테스트 수를 즉시 확인할 수 있습니다. 또한 실패한 테스트만 다시 실행할 수도 있습니다.
예 :
- 각각 독립적인 메서드에 작성된 다섯 개의 테스트 케이스가 있다고 가정해 봅시다. TestNG세 개는 통과하고 네 번째는 실패합니다. 네 번째 실패를 수정한 후에는 처음 세 개는 이미 통과했으므로 해당 실패만 다시 실행하고 싶습니다. 일반적인 main() 메서드 코드로는 이러한 작업을 수행하기 어렵습니다.
- TestNG 를 제공합니다
testng-failed.xml에 파일을test-output폴더. 해당 XML을 실행하면 실패한 경우만 다시 실행됩니다.
그뿐만 아니라, 여러분은 다음과 같은 장점을 배우게 될 것입니다. TestNG`@Test` 어노테이션을 사용하여 테스트 메서드를 작성하는 방법과 클래스를 실행 가능한 테스트 스위트로 변환하는 방법을 설명합니다. Eclipse 또는 명령줄을 사용할 수도 있습니다.
왜 사용 하는가? TestNG 과 Selenium?
기본적으로, Selenium 테스트 결과가 보기 좋게 정리되지 않습니다. TestNG 테스트 실행기가 연결되면 팀과 공유할 수 있는 구조화된 보고서가 생성됩니다.
다리 Selenium 사용자들이 선호하는 TestNG 위에 JUnit 더 폭넓은 기능 세트 덕분입니다. 주요 기능은 다음과 같습니다. Selenium 위치 :
- 실행된 테스트 케이스 수, 통과된 테스트 케이스 수, 실패한 테스트 케이스 수, 건너뛴 테스트 케이스 수를 포함하는 보고서입니다.
- 이지 그룹ping 테스트 케이스를 통해
testng.xml실행 우선순위가 지정된 파일입니다. - 반복문을 사용하지 않고 테스트를 여러 번 반복합니다.
invocationCount. - 여러 브라우저에서 여러 테스트를 실행합니다 — 크로스 테스트브라우저 테스트 지원합니다.
- Maven과의 원활한 통합, Jenkins그리고 기타 CI 도구들.
- Readable 어노테이션 — 예를 들어, @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
- Selenium WebDriver에는 기본 보고 기능이 없습니다. TestNG 아래와 같은 깔끔한 HTML 보고서로 그 공백을 채웁니다.
- TestNG 테스트 코드를 간소화합니다. 더 이상 정적 main 메서드가 필요하지 않으며, 어노테이션이 어떤 메서드가 언제 실행될지 결정합니다.
- 처리되지 않은 예외는 적절하게 처리됩니다. TestNG이러한 단계는 전체 실행을 종료하지 않고 실패한 단계로 보고됩니다.
의 장점 TestNG 위에 JUnit
TestNG 세 가지 주요 장점을 제공합니다. JUnit:
- 주석을 사용하면 이해하고 사용하기가 더 쉽습니다.
- 테스트 케이스를 그룹화하고 우선순위를 지정하는 데 드는 노력을 줄일 수 있습니다.
- 병렬 테스트 실행은 기본적으로 지원됩니다.
주석이란 무엇인가요? TestNG?
주석 TestNG 메서드 위에 배치되는 코드 줄로, 메서드의 실행 방식을 제어합니다. 항상 @ 기호로 시작합니다. 간단한 예는 아래에 나와 있습니다.
주석에 대한 자세한 내용은 해당 섹션에서 다룹니다. "사용된 주석" TestNG" 이 튜토리얼 후반부에 나올 내용이니 위의 예시는 단지 기대치를 설정하기 위한 것입니다. TestNG 어노테이션은 코드 작성과 읽기가 더 쉽습니다. JUnit 동등한 것들이며, 테스트를 실행할 때 필수적입니다. Selenium 그리드 병렬 실행이 중요한 경우.
테스트 케이스 작성 방법 TestNG
쓰기 TestNG 테스트 케이스는 세 단계로 구성됩니다.
- 비즈니스 로직을 작성하고 배치하세요. TestNG 각 메서드 위에 주석이 있습니다.
- 클래스 이름, 그룹 이름, 패키지 이름과 같은 메타데이터를 추가하세요.
- 실행 TestNG IDE 또는 명령줄에서 클래스를 실행하세요.
테스트 케이스 생성하기 TestNG 주석
이제 우리는 이를 사용하여 첫 번째 테스트 케이스를 만들겠습니다. TestNG 주석 Selenium테스트를 작성하기 전에 새 환경을 설정하세요. TestNG ~에있는 프로젝트 Eclipse 그것을 불러라. 이름TestNG하이라이트.
새로운 설정하기 TestNG 하이라이트
단계 1) 파일 > 새로 만들기 > Java 하이라이트.
단계 2) 엔터 버튼 이름TestNG하이라이트 프로젝트 이름으로 클릭하고 다음.
단계 3) 가져 오기 TestNG 라이브러리. 클릭하세요 도서관 탭을 누른 다음 라이브러리 추가….
단계 4) . 라이브러리 추가 대화 상자, 선택 TestNG 클릭 다음.
단계 5) 마감재 .
TestNG 이제 라이브러리 목록에 표시될 것입니다.
단계 6) 다음 내용이 포함된 JAR 파일을 추가하세요. Selenium API. 이것들은 다음에서 나옵니다. Java 클라이언트 드라이버는 다음에서 다운로드되었습니다. selenium.dev/downloads.
해당 폴더로 이동하세요 Selenium JAR 파일이 저장됩니다.
외부 JAR 파일을 추가한 후 화면은 다음과 같이 표시되어야 합니다.
단계 7) 마감재 . 새로운 이름TestNG하이라이트 패키지 탐색기에 나타납니다.
새로 만드는 방법 TestNG 테스트 파일
프로젝트 준비가 완료되면 새 프로젝트를 생성하세요. TestNG 파일.
단계 1) 마우스 오른쪽 버튼으로 src 폴더를 선택하고 신규 > 기타….
단계 2) 확장 TestNG 폴더, 선택 TestNG 수업그리고 클릭 다음.
단계 3) 아래에 표시된 값을 입력하고 클릭하세요. 마감재 . 그만큼 Java 파일 이름이 이름TestNG입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에.
단계 4) Eclipse 생성 TestNG 아래에 템플릿이 나와 있습니다.
코딩 첫걸음 TestNG 테스트 케이스
첫 번째를 만드세요 테스트 사례 그것은 다음 제목을 확인합니다. Mercury 투어 홈페이지.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
// Selenium 4 ships Selenium Manager, so the driver path is no longer required.
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.quit();
}
}
주의할 점:
- TestNG 필요하지 않습니다
main()방법. - 메서드는 정적일 필요가 없습니다.
- The @테스트 주석 표시
verifyHomepageTitle()테스트 케이스로 사용합니다. - 주석은 다음 위치에 있습니다.
org.testng.annotations.*패키지. - The 주장하다 수업에서
org.testng.Assert검증을 진행합니다.
하나의 코드에 여러 개의 @Test 어노테이션을 사용할 수 있습니다. TestNG 파일에서 다룹니다. "사용된 주석" TestNG" 안내
테스트 실행
파일을 마우스 오른쪽 버튼으로 클릭하고 실행하세요. TestNG 테스트. Eclipse 콘솔 창에 텍스트 결과와 그래픽 결과, 이렇게 두 가지 출력을 생성합니다. TestNG 결과 창.
작성자가 작성한 보고서 확인 TestNG
콘솔 창은 텍스트 기반 요약을 제공하는 반면 TestNG 결과 창에는 그래프로 된 보기가 표시됩니다.
HTML 보고서 생성
TestNG 완전한 HTML 보고서도 생성할 수 있습니다.
단계 1) 실행 후 이름TestNG입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에프로젝트를 마우스 오른쪽 버튼으로 클릭하고 선택하세요. 새로 고침.
단계 2) A 테스트 출력 폴더가 나타납니다. 폴더를 펼치고 찾으세요. index.html — 가장 최근 실행에 대한 HTML 보고서입니다.
단계 3) Double-딸깍 하는 소리 index.html 안쪽을 열다 Eclipse브라우저입니다. 다음 실행 후 새로 고침하려면 F5 키를 누르십시오.
주석 사용 TestNG
이미 @Test 어노테이션을 보셨습니다. 이 섹션의 나머지 부분에서는 가장 유용한 고급 어노테이션에 대해 다룹니다.
여러 테스트 케이스
하나의 TestNG 파일에는 여러 개의 `@Test` 어노테이션이 포함될 수 있습니다. 기본적으로 `@Test` 어노테이션이 있는 메서드는 알파벳 순서대로 실행됩니다. 아래 코드에서 메서드는 다음과 같습니다. c_test, a_test예산 및 b_test 소스 순서와 관계없이 알파벳순으로 실행됩니다.
코드를 실행하고 열어보세요 index.html. 딸깍 하는 소리 연대순 보기.
파라미터
기본 정렬 순서를 재정의하려면 다음을 사용하십시오. priority 매개 변수입니다. 매개변수는 어노테이션의 동작을 수정하는 키워드입니다.
- 값을 할당합니다
=. - 아래와 같이 어노테이션 바로 뒤에 괄호를 배치하여 매개변수를 감싸십시오.
TestNG @Test 어노테이션을 우선순위 값이 가장 낮은 것부터 가장 높은 것 순으로 실행합니다. 우선순위 번호는 연속적일 필요는 없습니다.
HTML 보고서는 메서드가 우선순위 오름차순으로 실행되었음을 확인시켜 줍니다.
다중 매개변수
게다가 priority, @Test는 다음을 수락합니다. alwaysRun 매개변수(참 또는 거짓). 하나의 어노테이션에서 두 개 이상의 매개변수를 사용하려면 쉼표로 구분하세요.
@Test(priority = 0, alwaysRun = true)
@BeforeTest 및 @AfterTest
| @BeforeTest | 이 어노테이션 아래에 있는 메서드가 실행됩니다. 첫 번째 테스트 케이스 이전에 TestNG 파일. |
| @애프터테스트 | 이 어노테이션 아래에 있는 메서드가 실행됩니다. 모든 테스트 케이스가 끝난 후 TestNG 파일 완료. |
아래 코드를 고려해보세요.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@AfterTest
public void terminateBrowser() {
driver.quit();
}
}
표와 코드를 통해 다음과 같은 순서가 될 것이라고 예측할 수 있습니다.
- 1번째 —
launchBrowser() - 2번째 —
verifyHomepageTitle() - 3번째 —
terminateBrowser()
소스 파일에서 어노테이션 블록의 위치는 실행 순서에 영향을 미치지 않습니다. 아래와 같이 메서드 순서를 바꿔보세요.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@AfterTest // Jumbled
public void terminateBrowser() {
driver.quit();
}
@BeforeTest // Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test // Jumbled
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
코드를 실행하고 결과를 확인하세요.
@BeforeMethod 및 @AfterMethod
| 안녕하세요. | 이 어노테이션 아래에 있는 메서드가 실행됩니다. 각 테스트 방법 전에. |
| 안녕하세요. | 이 어노테이션 아래에 있는 메서드가 실행됩니다. 각 테스트 방법 후에. |
In Mercury 예를 들어 홈페이지에서 접근한 두 개의 대상 페이지의 제목을 확인하고 싶다고 가정해 보겠습니다.
시험 진행 순서는 다음과 같습니다.
- 홈페이지를 열고 제목을 확인하세요.
- REGISTER를 클릭하고 대상 페이지의 제목을 확인하세요.
- 홈페이지로 돌아가서 제목을 확인하세요.
- 지원을 클릭하고 대상 페이지의 제목을 확인하세요.
- 홈페이지로 돌아가서 제목을 다시 확인하세요.
아래 코드는 @BeforeMethod와 @AfterMethod가 반복되는 단계를 처리하는 방식을 보여줍니다.
package firsttestngpackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@BeforeMethod
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@Test(priority = 0)
public void register() {
driver.findElement(By.linkText("REGISTER")).click();
expected = "Register: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@Test(priority = 1)
public void support() {
driver.findElement(By.linkText("SUPPORT")).click();
expected = "Under Construction: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void goBackToHomepage() {
driver.findElement(By.linkText("Home")).click();
}
@AfterTest
public void terminateBrowser() {
driver.quit();
}
}
테스트를 실행한 후, TestNG 아래 순서를 보고합니다.
요약하자면, 설정 단계를 안에 넣으세요. 안녕하세요. 그리고 내부 정리 또는 탐색 재설정 안녕하세요. 따라서 각 테스트 케이스는 알려진 상태에서 시작하고 알려진 상태에서 끝납니다.
요약 TestNG 주석
- @BeforeSuite: 테스트 스위트 내의 모든 테스트보다 먼저 실행됩니다.
- @AfterSuite: 테스트 스위트의 모든 테스트가 완료된 후에 실행됩니다.
- @테스트 전: 클래스 내부에 있는 모든 테스트 메서드보다 먼저 실행됩니다. 꼬리표.
- @AfterTest: 클래스 내부에 있는 모든 테스트 메서드가 실행된 후에 실행됩니다. 꼬리표.
- @BeforeGroups: 나열된 그룹에 속하는 첫 번째 테스트 메서드 바로 직전에 실행됩니다.
- @AfterGroups: 나열된 그룹에 속하는 마지막 테스트 메서드 직후에 실행됩니다.
- @수업전: 현재 클래스의 첫 번째 테스트 메서드 이전에 실행됩니다.
- @수업후: 현재 클래스의 모든 테스트 메서드가 실행된 후에 실행됩니다.
- @BeforeMethod: 각 테스트 메서드 실행 전에 실행됩니다.
- @AfterMethod: 각 테스트 메서드 실행 후에 실행됩니다.
- @시험: 해당 메서드를 테스트 케이스로 표시합니다.

































