junit vs testng what are differences
JUnit 대 TestNG 프레임 워크의 포괄적 인 비교. 주석 비교 및 기능별 비교를 예제와 함께 포함합니다.
이전 튜토리얼에서는 JRE 버전, 환경 변수 등과 같은 다양한 기준을 기반으로 DisplayName 주석 및 조건부 테스트 실행을 배웠습니다. 주제에 대한 몇 가지 중요한 질문도 다루었습니다.
이전 튜토리얼에서 JUnit에 대해 지속적으로 배웠기 때문에,이 튜토리얼은 잠시 동안 JUnit에서 JUnit과 TestNG의 비교로 초점을 전환 할 것입니다.
=> 여기에서 완벽한 JUnit 교육 가이드를 확인하십시오.
학습 내용 :
JUnit 대 TestNG : 비교
풍모 | JUnit | TestNG |
---|---|---|
테스트 시간 초과 | 예 | 예 |
오픈 소스 프레임 워크 | 예 JUnit은 오픈 소스 프레임 워크입니다. | 예 TestNG는 오픈 소스 프레임 워크입니다. |
사용자 친화적 | JUnit은 여러 모듈에 분산되어 있습니다. 예 : ? 매개 변수화를 위해 JUnit Jupiter가 필요할 수 있습니다. ? 이로 인해 JUnit을 TestNG에 비해 사용하기가 약간 번거 롭습니다. | 모든 TestNG 기능은 하나의 모듈로 제공됩니다. 이것은 TestNG를 더 사용자 친화적으로 만듭니다. |
주요 IDE 지원 ( 예: Eclipse, IntelliJ) | 예 둘 다 대부분의 IDE를 동일하게 지원합니다. | 예 둘 다 대부분의 IDE를 동일하게 지원합니다. |
주석 구현 | 예 JUnit은 다양한 기능에 대해 약간의 변형이있는 주석에서 작동합니다. | 예 TestNG는 다양한 기능에 대해 약간의 변형이있는 주석에서 작동합니다. |
어설 션 구현 | 예 JUnit은 TestNG의 어설 션에 대한 약간의 변형을 통해 예상 및 실제 결과를 검증 할 수있는 충분한 어설 션을 제공합니다. | 예 TestNG는 또한 예상 결과와 실제 결과를 비교할 수있는 방대한 어설 션 목록을 지원합니다. 또한 TestNG는 어설 션에 대해 소프트 어설 션 및 하드 어설 션의 두 가지 메커니즘을 제공합니다. |
예외 | 예 JUnit은 TestNG에 약간의 변형이있는 예외 테스트 기능을 제공합니다. | 예 TestNG는 예외 테스트 기능도 제공합니다. |
매개 변수화 된 테스트 | 예 JUnit은 매개 변수화 된 테스트를 지원합니다. | 예 TestNG는 매개 변수화 된 테스트도 지원합니다. |
테스트 스위트 | 예 JUnit은 테스트 스위트 사용을 지원합니다. | 예 TestNG는 Test Suite도 지원합니다. |
의존성 테스트 | 하지 마라 JUnit은 종속성 테스트 기능을 지원하지 않습니다. | 예 이것은 JUnit을 통한 TestNG의 고급 기능입니다. 이 기능을 사용하면 한 메서드가 다른 메서드에 종속되도록 만들어 종속 메서드가 실행 된 후에 만 메서드가 실행되고 그렇지 않으면 종속 테스트가 실행되지 않습니다. |
병렬 테스트 실행 | 하지 마라 JUnit에서는 병렬 실행을 사용할 수 없습니다. | 예 TestNG는 테스트의 병렬 실행을 지원하지만 JUnit은 지원하지 않습니다. 병렬 실행을 설정할 수있는 TestNG xml이 있습니다. |
Maven 통합 | 예 두 도구 모두 Maven 통합을 지원합니다. | 예 두 도구 모두 Maven 통합을 지원합니다. |
가정의 구현 | 예 특정 가정 또는 조건에 따라 테스트를 건너 뛰기 위해 가정이 사용됩니다. 이것은 JUnit에서만 적용됩니다. | 하지 마라 TestNG는 가정을 지원하지 않습니다. |
테스트 실행 순서 | 예 Junit은 테스트 실행 순서를 지원합니다. | 예 TestNG는 테스트 실행 순서를 지원합니다. |
청취자의 구현 | 예 JUnit은 주석이 아닌 Listeners API를 통해 리스너를 지원합니다. | 예 TestNG는 주석을 통해 리스너를 지원합니다. |
테스트 무시 | 예 둘 다 테스트 비활성화를 지원하지만 JUnit은 다른 조건에 따라 실행 테스트 비활성화를 지원합니다. | 예 둘 다 테스트 비활성화 지원 |
보고 | 예 HTML 보고서를 생성하려면 JUnit을 maven과 통합해야합니다. | 예 TestNG에는 HTML 보고서가 내장되어 있습니다. Maven 또는 ATU 보고서 또는 Extent 보고서와 같은 외부보고 라이브러리와 통합 할 수 있습니다. |
주석 비교
TestNG와 JUnit은 모두 Java 세계의 단위 테스트 프레임 워크입니다. 둘 다 매우 가깝고 유사한 기능을 구현합니다. 이 섹션에서는 몇 가지 기능을 구현할 때 몇 가지 유사점을 살펴보고 JUnit과 TestNG에서 다르게 구현되는 몇 가지 다른 기능도 살펴볼 것입니다.
# 1) 테스트 방법 주석
JUnit과 TestNG에서 테스트 메소드로 메소드를 지정하는 방식에는 차이가 없습니다.
JUnit 5 | TestNG |
---|---|
@테스트 | @테스트 |
# 2) Suite 관련 주석
- @BeforeSuite 주석이있는 메소드는 현재 테스트 스위트가 실행되기 전에 한 번 실행됩니다.
- 이 주석은 TestNG에서만 적용 가능합니다.
JUnit 5 | TestNG |
---|---|
해당 없음 | 안녕하세요. |
# 3) 클래스 전 메서드에 대한 주석
클래스의 첫 번째 테스트 메서드가 실행되기 전에 한 번 실행되는 메서드에 대한 주석입니다.
JUnit 5 | TestNG |
---|---|
@BeforeAll | 뿡 빵뀨 |
# 4) 테스트 전 메서드에 대한 주석
- 이 주석은 testng.xml의 태그 내에서 선언 된 메소드 전에 한 번 실행됩니다.
- 이 주석은 TestNG에만 사용할 수 있습니다.
JUnit 5 | TestNG |
---|---|
해당 없음 | @BeforeTest |
# 5) @Test가있는 모든 메소드가 호출되기 전에 실행될 메소드에 대한 주석
JUnit 5 | TestNG |
---|---|
꺄뜌 님 | 안녕하세요. |
# 6) @Test가있는 모든 메서드가 호출 된 후 실행될 메서드에 대한 주석
JUnit 5 | TestNG |
---|---|
@AfterEach | 안녕하세요. |
# 7) 테스트 후 메서드 주석
- 이 주석은 testng.xml의 태그 내에 선언 된 메소드 이후에 한 번 실행됩니다.
- 이 주석은 TestNG에만 사용할 수 있습니다.
JUnit 5 | TestNG |
---|---|
해당 없음 | @AfterTest |
# 8) 클래스 이후 메소드 주석
클래스의 마지막 테스트 메서드가 실행 된 후 한 번 실행되는 메서드에 대한 주석입니다.
JUnit 5 | TestNG |
---|---|
@AfterAll | @방과후 |
# 9) Test 메서드의 실행을 비활성화하는 주석.
- JUnit 5는 특정 테스트 실행을 비활성화하는 주석을 제공합니다.
- TestNG는 @Test에 대한 속성을 제공합니다. 즉, 메소드 실행을 비활성화할지 활성화 할지를 결정하는 부울 값과 함께‘활성화 됨’
JUnit 5 | TestNG |
---|---|
@ignore | @Test (활성화 = false) |
인용하다 Tutorial 7 실행 건너 뛰기 JUnit4 대 JUnit 5에서 테스트를 비활성화하는 방법을 이해하는 방법
# 10) 타임 아웃 주석
주석은 JUnit 5와 TestNG에 대해 동일합니다.
JUnit 5 | TestNG |
---|---|
@Test (시간 초과 = 2000) | @Test (시간 초과 = 2000) |
# 11) 예상 예외 속성
- Exception 클래스는 테스트가 실행될 때 주어진 클래스의 예외가 발생 함을 나타냅니다.
- 이것은 JUnit과 TestNG에서 모두 지원되며 둘 다 선언되는 방식이 다양합니다.
JUnit 5 | TestNG | |
---|---|---|
@Test (expected = NullPointerException.class) | @Test (expectedException = NullPointerException.class) |
# 12) Suite 관련 주석
- @AfterSuite 주석이있는 메소드는 현재 테스트 스위트가 실행 된 후 한 번 실행됩니다.
- 이 주석은 TestNG에서만 적용 가능합니다.
JUnit 5 | TestNG |
---|---|
해당 없음 | @AfterSuite |
# 13) 그룹 관련 주석
- 주석은 TestNG에서만 사용할 수 있습니다.
- @BeforeGroups 어노테이션이있는 메소드는 특정 그룹에 속하는 테스트 메소드가 실행되기 전에 실행됩니다.
JUnit 5 | TestNG | |
---|---|---|
해당 없음 | 안녕하세요. |
- 주석은 TestNG에서만 사용할 수 있습니다.
- @BeforeGroups 주석이있는 메서드는 특정 그룹에 속하는 테스트 메서드가 실행 된 후에 실행됩니다.
JUnit 5 | TestNG |
---|---|
해당 없음 | @AfterGroups |
# 14) 실행 순서 관련 주석
JUnit과 TestNG는 모두 실행을위한 테스트 순서를 명시 적으로 설정하는 것을 지원합니다. 즉, 테스트 케이스의 우선 순위를 설정합니다.
- JUnit 5에는 MethodOrderer 패키지에 내장 된 클래스 인 Alphanumeric.class 또는 OrderAnnotation.class 또는 Random.class가 주석에 대한 입력 매개 변수로 포함 된 @TestMethodOrder () 주석이 있습니다.
인용하다 튜토리얼 9 – Junit 테스트 실행 순서 JUnit에서 테스트 실행 순서 설정에 대한 자세한 내용은.
- TestNG에는 숫자 값을 허용하는 @Test 주석의 '우선 순위'속성이 포함됩니다.
JUnit 5 | TestNG |
---|---|
@TestMethodOrder (Alphanumeric.class) | @ 테스트 (우선 순위 = 1) |
TestNG 및 JUnit 4 용 기본 프로그램
# 1) TestNG 코드
package newtest.com; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeTest; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeSuite; import org.testng.annotations.AfterSuite; public class NewTestng { @Test(dataProvider = 'dp') public void f(Integer n, String s) { System.out.println(' * * * * * * *Parameterized method * * * * * * * * * '); System.out.println('Integer '+n+' String '+s); System.out.println(' * * * * * * * * * * * * * * * * '); } @BeforeMethod public void beforeMethod() { System.out.println('Before Method'); } @AfterMethod public void afterMethod() { System.out.println('After Method'); } @DataProvider public Object()() dp() { return new Object()() { new Object() { 1, 'a' }, new Object() { 2, 'b'}, }; } @BeforeClass public void beforeClass() { System.out.println('Before Class'); } @AfterClass public void afterClass() { System.out.println('After Class'); } @BeforeTest public void beforeTest() { System.out.println('Before Test'); } @AfterTest public void afterTest() { System.out.println('After Test'); } @BeforeSuite public void beforeSuite() { System.out.println('Before Suite'); } @AfterSuite public void afterSuite() { System.out.println('After Suite'); } }
예상 출력 :
# 2) JUnit 4 코드
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.BeforeClass; import org.junit.AfterClass; public class JunitTest { @Parameterized.Parameters public static Object()() data() { return new Object(3)(0); } @BeforeClass public static void beforeClass() { System.out.println('Before Class'; } @Before public void beforeMethod() { System.out.println('Before Method'); } @Test public void f() { System.out.println(' * * * * * * *test * * * * * * * * * '); int n=10; System.out.println('Integer '+n); System.out.println(' * * * * * * * * * * * * * * * * '); } @After public void afterMethod() { System.out.println('After Method'); } @AfterClass public static void afterClass() { System.out.println('After Class'); } }
예상 출력 :
JUnit 5와 TestNG : 예제의 기능 차이
# 1) 테스트 스위트
- 테스트 스위트는 테스트 모음입니다. 즉, 여러 클래스의 여러 테스트 케이스를 함께 래핑하는 것과 같습니다.
- TestNG가 스위트를 사용하는 접근 방식은 JUnit의 접근 방식과 다르고 강력합니다.
JUnit 5의 테스트 스위트
JUnit 5가 테스트 스위트를 어떻게 적용하는지 빠르게 살펴 보겠습니다.
인용하다 튜토리얼 8-JUnit 테스트 스위트 및 필터링 JUnit 4 및 JUnit 5의 테스트 스위트 구현을 더 잘 이해하기위한 테스트 케이스
@RunWith(JUnitPlatform.class) @SelectClasses({JUnit5TestCase1.class, JUnit5TestCase2.class }) public class JUnitTestSuite { }
TestNG의 테스트 스위트
TestNG는 XML을 아래 템플릿으로 사용하여 논리적으로 연결된 모든 Test 클래스를 래핑합니다.
# 2) 매개 변수화 된 테스트
TestNG와 JUnit은 모두 데이터 변형으로 동일한 테스트를 실행하는 테스트의 매개 변수화를 허용합니다.
JUnit 4의 매개 변수화 된 테스트
@RunWith(value=Parameterized.class) public class JUnitclass{ int n; public JUnitclass (int num){ this.n=num; } @Parameters public static Iterable data(){ Object()() objectArray =new Object()() {{1},{2},{3}}; returnArrays.asList(objectArray); } @Test public void Junittst(){ System.out.println(“Multiples of 2 are :”+ 2*n); } }
TestNG의 매개 변수화 된 테스트
TestNG에서 매개 변수화를 사용하는 방법에는 두 가지가 있습니다.
- @Parameters 및 TestNG XML 통과
- @DataProvider 주석
a) @Parameters 및 TestNG XML 통과
public class testins{ @Test @Parameters(value=”env_pd”) public void paramEnv(str env_pd){ If(env_pd=”QA”){ url=”definetest.com” } else if(env_pd=”accpt”){ url=”defineacc.com” }}}
동일한 XML
b) DataProvider
DataProvider 주석은 항상 객체 배열 인 Object () ()를 반환합니다.
@DataProvider(name='state') public Object()() getDataFromDataprovider(){ return new Object()() { { 'Maharashtra', 'Pune' }, { 'Karnataka', 'Bangalore' }, { 'Kerala', 'Trivandrum' } }; @Test(dataProvider=”state”) public void paramMethd(str stateName, str cityName){ System.out.println(stateName+” ”+cityName); }
# 3) 타임 아웃
특정 테스트가 규정 된 시간 내에 완료되지 않으면 시간 초과가 발생합니다. 다른 경우 스레드가 중단됩니다.
Eclipse에서 Java 애플리케이션을 만드는 방법
JUnit의 시간 초과
JUnit에서 Timeout 구현에 대한 다양한 접근 방식이 있습니다. 이것들은:
- 특정 밀리 초로 일반적인 제한 시간 사용
- 어설 션에 제한 시간 사용
- 글로벌 제한 시간 사용
JUnit 4 및 JUnit 5의 시간 제한에 초점을 맞춘 자세한 자습서가 있습니다.
다음은 JUnit 5의 일반적인 시간 제한 사용법을 보여주는 스 니펫입니다.
@Test(timeout = 5000) public void testTimeout() throws InterruptedException { while (true) { } }
5 초 후 위의 테스트 시간 초과.
TestNG의 시간 초과
TestNG는 또한 간단한 제한 시간 구현 방법을 사용합니다.
@Test(timeout = 5000) public void testTimeout() throws InterruptedException { while (true) { } }
# 4) 예외 테스트
예외 테스트는이 미리 정의 된 예외가 발생했을 때 정상적으로 포착되고 로그에 통지되는지 확인합니다.
JUnit 4의 예외 테스트
@Test (expected = NumberFormatException.class) public void converttoint() { Int j=Integer.parseInt(“Four”); }
JUnit 4 및 5에 대한 예외를 자세히 다루는 별도의 튜토리얼이 있습니다.
TestNG의 예외 테스트
TestNG의 예외 테스트 선언이 약간 변경되었습니다.
@Test (expectedExceptions = NumberFormatException.class) public void converttoint() { Int j=Integer.parseInt(“Four”); }
# 5) 테스트 비활성화
TestNG와 JUnit 모두 실행을 위해 테스트를 비활성화 할 수 있습니다.
JUnit 5에서 비활성화 된 테스트
@Disabled 주석을 클래스 맨 위에 사용하면 클래스 내의 모든 테스트가 실행되지 않습니다. 특정 @Test 메서드 위에 사용될 때 특정 테스트 케이스가 실행을 위해 비활성화되는 주석입니다.
import org.junit.AfterClass; @Disabled('the testcase is under development') public class JUnitProgram {
TestNG에서 비활성화 된 테스트
TestNG는 @Test 어노테이션의 '활성화 됨'속성이 false로 설정되고 속성이 true로 설정되면 활성화 된 경우 테스트에서 테스트 실행을 비활성화 할 수 있도록합니다. 클래스 내의 모든 테스트를 활성화해야하는 경우 각 @Test 메서드에 대해 enabled = true로 명시 적으로 표시합니다.
아래는 테스트 건너 뛰기를 보여주는 코드 스 니펫입니다.
@Test(enabled=false) public void f_validate(){ // let us skip this function}
# 6) 그룹 테스트
사람들이 JUnit이 특정 그룹 이름을 가진 테스트 그룹화를 지원하지 않는다고 언급 한 여러 사이트와 포럼에서 모순 된 진술이있었습니다.
주석 @BeforeGroups 및 @AfterGroups는 TestNG에서만 제공되지만 JUnit 4와 JUnit 5에서는 그룹화가 허용됩니다. 여기서는 JUnit 5에서 그룹 테스트의 사용법을 빠르게 보여줄 것입니다. 그룹 테스트는 JUnit 4 및 태그의 카테고리라고합니다. JUnit 5.
예제와 함께 유닉스에서 명령 찾기
당신은 참조 할 수 있습니다 튜토리얼 8 – JUnit 테스트 스위트 및 필터링 테스트 JUnit에서의 사용법에 대한 자세한 내용은.
JUnit 5의 그룹 테스트
@Tag(“Regression”) @Test public void junitMethod1(){} @Tag(“SmokeTest”) @Test public void junitMethod2(){
JUnit5TestSuite.java의 코드 스 니펫 :
아래 코드는 'Regression'이라는 이름의 그룹을 포함하고 junitMethod1 ()은 실행되지만 junitMethod2 ()는 제외된다고 추론하는 'SmokeTest'그룹을 제외합니다.
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @IncludeTags(“Regression”) @ExcludeTags(“SmokeTest”) public class JUnit5TestSuite { }
TestNG의 그룹 테스트
위의 스 니펫을 TestNG에서 해석해야하는 경우 다음은 동일한 코드입니다.
@Test(groups={“Regression” }) public void junitMethod1(){} @Test(groups={“SmokeTest” }) public void junitMethod2(){}
TestNG XML은 다음과 같습니다.
여기서 회귀 그룹 메서드는 러너에 포함되고 SmokeTest를 포함한 나머지 그룹은 제외됩니다.
# 7) 병렬 테스트
이것은 TestNG에서만 사용할 수있는 기능입니다. 일반적으로 테스트 케이스는 차례로 호출되는 일종의 스레드입니다. 그러나 실행 시간을 절약하려면 테스트가 병렬로 실행되도록 설정하고 한 번에 실행해야하는 스레드 수를 제공하여 TestNG에서이를 제어 할 수 있습니다.
여기에서는 Depends on 메서드의 사용법을 간략히 설명하고 그룹에 따라 다룬 것은 설명하지 않습니다.
다른 메서드에 대한 종속 테스트는 다음과 같이 TestNG XML을 통해 설정됩니다.
# 8) 의존 테스트
종속 테스트는 TestNG에서만 사용할 수있는 고급 기능입니다. 종속성은 테스트 또는 그룹에있을 수 있습니다.
@Test mytest1(){ System.out.println(“My test : mytest1”); } @Test (dependensOnMethods={“mytest1”}) public void mytest2(){ System.out.println(“My test : mytest2”); }
위의 프로그램에서 mytest2는 mytest1에 의존하므로 먼저 mytest1이 실행 된 다음 mytest2가 실행됩니다. mytest1이 실패하면 mytest2가 호출되지 않습니다. 실행하려는 특정 워크 플로를 제어하기 위해 종속 테스트 케이스를 미리 정의 할 수있는 방법입니다.
# 9) 청취자
리스너는 테스트 내에서 발생하는 모든 이벤트를 수신합니다. 리스너는 JUnit과 TestNG 모두에서 지원됩니다. 따라서 테스트 시작 전, 테스트 완료 후, 테스트 건너 뛰기, 테스트 통과 또는 실패시 특정 작업을 수행하거나 로그에 특정 메시지를 표시하려는 경우 다음과 같은 리스너 기능이 있습니다. 이 작업을 수행
JUnit은 Listener 클래스를 사용하고 TestNG는 Listener 인터페이스를 사용합니다. TestNG는 Listener 인터페이스 메서드를 정의하는 리스너 클래스를 작성하고, 두 번째 단계는 메인 클래스에서 @Listeners 주석을 사용하여이 Listener 클래스 이름을 호출하는 것입니다.
JUnit은 또한 하나 이상의 기본 클래스에 리스너 함수를 적용하기 위해 리스너 러너 클래스가 정의 된 리스너 상위 클래스에서 메소드를 상속합니다.
TestNG의 리스너
TestNG가 구현되는 ITestListener 인터페이스가 있습니다.
다음은 ITestListener 구현시 정의해야하는 메소드입니다.
- OnTestStart ()
- OnTestFailure ()
- OnTestSuccess ()
- OnTestSkipped ()
- OnStart ()
- OnFinish ()
다음은 onTestStart () 및 onTestSuccess ()를 보여주는 코드 스 니펫입니다.
import org.testng.ITestListener; import org.testng.ITestResult; public class TestListener implements ITestListener { @Override public void onTestStart(ITestResult result) { System.out.println('Execution started: '+result.getName()); } @Override public void onTestSuccess(ITestResult result) { System.out.println('Test Passed '+result.getName()); }
@Listener 주석을 사용하여 아래와 같이 기본 클래스에서이 리스너 클래스를 호출합니다.
import org.testng.annotations.Listeners; import org.testng.annotations.Test; @Listeners(com.javatpoint.Listener.class) public class MymainClass { @Test public void sum() {
JUnit 5의 리스너
RunListener는 리스너 함수를 정의하기 위해 리스너 클래스에서 확장해야하는 클래스입니다.
JUnit에는 다음과 같은 메소드가 있습니다.
- testRunStarted
- testRunFinished
- testFailure
- tesIgnored
import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; public class Mylistenerclass extends RunListener { public void testRunStarted(Description desc) throws java.lang.Exception { System.out.println('Execution started' + desc.getMethodName()); } public void testRunFinished(Description desc) throws java.lang.Exception { System.out.println('Execution finished' + desc.getMethodName()); }
위의 리스너 클래스를 호출하려면 리스너 실행 클래스 생성이 필요합니다.
테스트 메서드를 사용하여 리스너 Mylistener 클래스를 여러 클래스에 적용 할 수 있습니다.
public class ListenerRunner { public static void main(String() args) { JUnitCore runme = new JUnitCore(); runme.addListener(new ListenerRunner()); runner.run(FirstClass.class, SecondClass.class); }
결론
이 JUnit Vs TestNG 튜토리얼에서는 TestNG와 JUnit 프레임 워크를 비교했습니다. 두 프레임 워크에서 지원되는 공통 기능과 TestNG에서만 지원되는 추가 기능을 배웠습니다. 분명히 병렬 실행 및 종속성 테스트와 같은 TestNG에만 몇 가지 추가 기능이 있습니다. TestNG에서 지원하는 대부분의 기능은 JUnit에서도 사용할 수 있습니다.
공통 기능에 대한 JUnit 대 TestNG의 구문, 용어 측면에서 약간의 편차가 있습니다. TestNG보다 JUnit의 강점을 약화시킨 사람들은 지금까지 깨달았을 것입니다. 즉, JUnit은 강력한 자동화 프레임 워크 중 하나이기도합니다.
우리는 JUnit의 더 많은 흥미로운 측면으로 돌아올 것입니다. 다가오는 튜토리얼에 충실하세요 !!!