TestNG vs JUnit – 그들 사이의 차이점

주요 차이점 TestNG JUnit

  • TestNG 하는 Java기반 프레임워크인 동시에 JUnit JAVA용 오픈 소스 단위 테스트 프레임워크입니다.
  • 비교 TestNG Vs JUnit, TestNG 주석은 주석보다 사용하고 이해하기가 더 쉽습니다. JUnit.
  • TestNG 병렬 테스트를 만들 수 있지만 JUnit 병렬 테스트 실행을 지원하지 않습니다.
  • In TestNG, 테스트 케이스는 함께 그룹화될 수 있습니다. JUnit그룹ping 동시에 여러 테스트를 진행하는 것은 불가능합니다.
TestNG vs JUnit
TestNG vs JUnit

TestNG?

TestNG NG는 "Next Generation"을 의미하는 자동화 테스트 프레임워크입니다. TestNG 영감을받은 JUnit 주석(@)을 사용합니다. TestNG 단점을 극복한 JUnit 그리고 만들도록 설계되었습니다 종단 간 테스트 쉽게.

사용 TestNG를 사용하면 적절한 보고서를 생성할 수 있으며 통과, 실패, 건너뛴 테스트 사례 수를 쉽게 알 수 있습니다. 실패한 테스트 사례를 별도로 실행할 수 있습니다.

Junit이란 무엇인가요?

JUnit 오픈 소스 유닛입니다 지원 JAVA용 프레임워크. 유용합니다 Java 개발자가 반복 가능한 테스트를 작성하고 실행합니다. Erich Gamma와 Kent Beck이 처음에 개발했습니다. xUnit 아키텍처의 인스턴스입니다. 이름에서 알 수 있듯이 다음에 사용됩니다. 단위 테스트 작은 코드 덩어리.

테스트 중심 방법론을 따르는 개발자는 코드를 작성하기 전에 먼저 단위 테스트를 작성하고 실행해야 합니다.

코드 작업이 완료되면 모든 테스트를 실행해야 하며 테스트는 통과해야 합니다. 코드가 추가될 때마다 모든 테스트 사례를 다시 실행하고 손상된 부분이 없는지 확인해야 합니다.

차이점 JUnit TestNG

모두 TestNG JUnit4는 하나 또는 두 개의 기능을 제외하고 유사해 보입니다. 어떤 기술이 단위 테스트에 더 유리한지 빠르게 결정하기 위해 두 가지를 비교해 보겠습니다. 아래 표에는 두 가지 모두에서 지원되는 기능이 강조되어 있습니다.

차이점 JUnit   TestNG

주석

모두 JUnit TestNG 주석을 사용하며 거의 모든 주석이 비슷해 보입니다.

TestNG @BeforeMethod,@AfterMethod를 @Before,@After와 유사하게 사용합니다. JUnit4.

모두 TestNG Junit4는 timeout에 @Test(timeout = 1000)을 사용합니다. 자세한 내용은 아래 표를 확인하세요.

SN 기술설명 TestNG JUnit 4
1 테스트 주석 @테스트 @테스트
2 현재 클래스에서 첫 번째 테스트 메서드가 호출되기 전에 실행됩니다. 뿡 빵뀨 뿡 빵뀨
3 현재 클래스의 모든 테스트 메서드 이후에 실행됩니다. @방과후 @방과후
4 각 테스트 메서드 전에 실행됩니다. 안녕하세요. @전에
5 각 테스트 메서드 후에 실행됩니다. 안녕하세요. @후에
6 테스트를 무시하는 주석 @Test(활성화=false) @무시하다
7 예외에 대한 주석 @Test(expectedExceptions = ArithmeticException.class) @Test(예상 = ArithmeticException.class)
8 시간 제한 @Test(시간 초과 = 1000) @Test(시간 초과 = 1000)
9 제품군의 모든 테스트 전에 실행됩니다. 안녕하세요. N / A
10 제품군의 모든 테스트 후에 실행됩니다. @애프터스위트 N / A
11 테스트가 실행되기 전에 실행됩니다. @BeforeTest N / A
12 테스트 실행 후 실행 @애프터테스트 N / A
13 이러한 그룹 중 하나에 속하는 첫 번째 테스트 메서드가 호출되기 전에 실행됩니다. 안녕하세요. N / A
14 여기의 그룹 중 하나에 속하는 마지막 테스트 방법 후에 실행하십시오. @AfterGroups N / A

스위트 테스트

스위트는 여러 테스트를 함께 실행하는 데 사용됩니다. 스위트는 두 가지를 모두 사용하여 생성할 수 있습니다. TestNG JUnit4. 그러나 제품군은 다음에서 더 강력합니다. TestNG 테스트 실행에 매우 다른 방법을 사용하기 때문입니다. 아래와 같이 코드 조각을 사용하여 이해해 보겠습니다.

사용 JUnit4

아래 수업에서는 작업하는 동안 제품군 사용을 설명합니다. JUnit4:

package guru99.junit;		
import org.junit.runner.RunWith;		
import org.junit.runners.Suite;		

@RunWith(Suite.class)				
@Suite.SuiteClasses({				
    SuiteTest1.class,			
    SuiteTest2.class,			

})		

public class JunitTest {		
// This class remains empty,it is used only as a holder for the above annotations		
}

사용 TestNG

TestNG xml을 사용하여 모든 테스트를 한 곳에 묶습니다. 아래 xml에서는 작업 중 제품군 사용에 대해 설명합니다. TestNG:

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
<classes>
<class name="com.guru99.SuiteTest1" />
<class name="com.guru99.SuiteTest2" />
</classes>
</test>
</suite>

테스트 무시

두 가지를 모두 사용하면 테스트를 건너뛸 수 있습니다. 아래 주어진 코드 예제를 사용하여 살펴보겠습니다.

사용 JUnit4

아래 코드 조각은 작업 중 @ignore 주석 사용을 설명합니다. JUnit4:

@Ignore
public void method1() 
{
	System.out.println("Using @Ignore , this execution is ignored");
}

사용 TestNG

아래 코드 조각은 작업하는 동안 @Test(enabled=false) 주석 사용을 설명합니다. TestNG:

@Test(enabled=false)
public void TestWithException()
{  
	System.out.println("Method should be ignored as it's not ready yet");
}

예외 테스트

예외 테스트는 두 가지 모두에서 사용할 수 있습니다. TestNG JUnit4. 테스트에서 어떤 예외가 발생하는지 확인하는 데 사용됩니다.

사용 JUnit4

아래 코드 조각은 작업 중 예외 테스트 사용을 설명합니다. JUnit4:

@Test(expected = ArithmeticException.class)  
public void divideByZero() 
{  
	Int i = 1/0;
}

사용 TestNG

아래 코드 조각은 작업 중 예외 테스트 사용을 설명합니다. TestNG:

@Test(expectedExceptions = ArithmeticException.class)  
public void divideByZero()
{  
Int i = 1/0;
}	

시간 초과

이 기능은 TestNg와 JUnit4.Timeout은 지정된 시간(밀리초)보다 오래 걸리는 테스트를 종료하는 데 사용됩니다.

사용 JUnit4

아래 코드 조각은 작업 중 시간 초과 테스트 사용을 설명합니다. JUnit4:

@Test(timeout = 1000)  
public void method1()
{  
	while (true);  
}

사용 TestNG

아래 코드 조각은 작업 중 시간 초과 테스트 사용을 설명합니다. TestNG:

@Test(timeOut = 1000)  
public void method1()
{  
	while (true);  
}

매개변수화된 테스트

JUnit 매개변수화된 테스트라고 알려진 테스트에 대한 더 쉽고 읽기 쉬운 접근 방식을 제공합니다. 둘 다 TestNG JUnit 매개변수화된 테스트를 지원하지만 매개변수 값을 정의하는 방식이 다릅니다. 이것을 하나씩 살펴보자.

사용 JUnit4

"@RunWith" 및 "@Parameter" 주석은 단위 테스트에 매개변수 값을 제공하는 데 사용됩니다. @Parameters 주석은 List[] 를 반환해야 합니다. 이 매개변수는 클래스 생성자에 인수로 전달됩니다.

@RunWith(value = Parameterized.class)
public class JunitTest{
    
    privateint number;
    
    public JunitTest6(int number)
 {
    this.number = number;
     }

     @Parameters
    public static Collection<Object[]> data() 
{
       Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
    returnArrays.asList(data);
    }
     
     @Test
    public void parameterTest()
 {
    System.out.println("Parameterized Number is : " + number);
     }
}

사용 TestNG

In TestNG, XML 파일 또는 "@DataProvider"는 테스트용 매개변수를 제공하는 데 사용됩니다.

여기서 메소드에 선언된 @Parameters 주석에는 테스트용 매개변수가 필요합니다. 매개변수로 사용되는 데이터는 TestNG의 XML 구성 파일입니다. 이렇게 하면 단일 항목을 재사용할 수 있습니다. 테스트 케이스 다른 데이터 세트를 사용하면 다른 결과를 얻을 수 있습니다.

public class Test1 {

    @Test
    @Parameters(value="number")
    public void parameterTest(int number)
	{
    	System.out.println("Parameterized Number is : " + number);
    }
     
}

위 클래스에 사용될 아래 XML 파일을 참조하십시오.

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
    
<parameter name="number" value="2"/>    

<classes>
<class name="com.guru99.Test1" />
</classes>
</test>
</suite>

제품 개요

우리는 봤다 JUnit4 및 TestNG 세부 사항에서 비교합니다. 우리는 또한 매개변수화된 테스트와 종속성 테스트를 제외하고는 둘 다 비슷하다는 것을 보았습니다. 간단히 말해서, 유연성과 요구 사항에 따라 단위 테스트를 위해 둘 중 하나를 선택할 수 있다고 말할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.