JUnit 테스트 케이스 @Before @BeforeClass 주석

JUnit 가장 인기있는 유닛입니다 지원 프레임 워크 Java. 명시적으로 권장되는 사항은 다음과 같습니다. 단위 테스트. JUnit 웹 애플리케이션 테스트를 위한 서버가 필요하지 않으므로 테스트 프로세스가 빠릅니다.

JUnit 또한 프레임워크를 사용하면 테스트 사례와 테스트 데이터를 빠르고 쉽게 생성할 수 있습니다. 그만큼 org.Junit 패키지는 다양한 인터페이스와 클래스로 구성됩니다. JUnit Test, Assert, After, Before 등의 테스트

테스트 픽스처란 무엇입니까?

테스트 픽스처가 무엇인지 이해하기 전에 아래 코드를 살펴보겠습니다.

이 코드는 간단한 파일에서 두 가지 테스트 사례를 실행하도록 설계되었습니다.

public class OutputFileTest {
    private File output; 
    output = new File(...);
    output.delete(); 
public void testFile1(){
        //Code to verify Test Case 1
}
    output.delete();
    output = new File(...);
public void testFile2(){
        //Code to verify Test Case 2
}
 output.delete(); 
}

여기에는 몇 가지 문제가 있습니다.

  • 코드를 읽을 수 없습니다
  • 코드는 유지 관리가 쉽지 않습니다.
  • 테스트 모음이 복잡하면 코드에 논리적 문제가 포함될 수 있습니다.

다음을 사용하여 동일한 코드를 비교합니다. JUnit

public class OutputFileTest		
{
    private File output; 
    @Before public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

코드는 훨씬 더 읽기 쉽고 유지 관리하기 쉽습니다. 위의 코드 구조는 다음과 같습니다. 테스트 설비.

테스트 픽스처는 다음과 같은 상황입니다. JUnit 테스트 케이스 달린다. 일반적으로 테스트 픽스처에는 다음이 포함됩니다.

  • 모든 테스트 사례에 사용할 수 있는 개체 또는 리소스입니다.
  • 이러한 객체/리소스를 사용 가능하게 만드는 데 필요한 활동입니다.
  • 이러한 활동은
    1. 할당(설치)
    2. 할당 해제(해체).

설정 및 해제

  • 일반적으로 각 테스트 사례 전에 수행해야 하는 몇 가지 반복 작업이 있습니다. 예: 데이터베이스 연결을 만듭니다.
  • 마찬가지로, 각 테스트 사례가 끝날 때마다 반복되는 작업이 있을 수 있습니다. 예: 테스트 실행이 끝나면 정리합니다.
  • JUnit 설정 및 해제에 도움이 되는 주석을 제공합니다. 리소스가 해제되고 테스트 시스템이 다음 테스트 사례를 위한 준비 상태에 있는지 확인합니다.

Bowman의 JUnit 주석은 아래에서 논의됩니다.

설정

@전에 주석 JUnit 다음을 포함하는 메서드에 사용됩니다. Java 각 테스트 케이스 전에 실행할 코드입니다. 즉, 각 테스트 실행 전에 실행됩니다.

분해(판결과 관계없음)

@후에 주석은 각 테스트 사례 후에 실행할 Java 코드가 포함된 메서드에 사용됩니다. 이러한 메서드는 테스트 사례에서 예외가 발생하거나 어설션이 실패하는 경우에도 실행됩니다.

참고 :

  • 위에 나열된 주석은 원하는 수만큼 가질 수 있습니다.
  • 주석이 달린 모든 메소드 @전에 in JUnit 각 테스트 케이스 전에 실행되지만 순서에 관계없이 실행될 수 있습니다.
  • 슈퍼 클래스로부터 @Before, @After 메소드를 상속받을 수 있으며, 실행은 다음과 같습니다. JUnit.
  1. 실행 JUnit 슈퍼클래스의 @Before 메소드
  2. 이 클래스에서 @Before 메서드를 실행합니다.
  3. 이 클래스에서 @Test 메서드를 실행합니다.
  4. 이 클래스에서 @After 메서드를 실행합니다.
  5. 슈퍼클래스에서 @After 메소드 실행

예: 파일을 테스트 픽스처로 사용하여 클래스 생성

public class OutputFileTest		
{
    private File output; 
    @Before	public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

위의 예에서 실행 체인은 다음과 같습니다.

설정 및 해제

  1. 생성출력파일()
  2. 테스트파일1()
  3. 삭제출력파일()
  4. 생성출력파일()
  5. 테스트파일2()
  6. 삭제출력파일()

인수:

testFile1()은 testFile2()보다 먼저 실행됩니다. 이는 보장되지 않습니다.

한 번만 설정

  • 테스트가 실행되기 전, 전체 테스트 클래스에 대해 한 번만 메서드를 실행할 수 있습니다. @전에 행동 양식).
  • "한 번만 설정"은 서버 시작, 통신 열기 등에 유용합니다. 각 테스트에 대해 리소스를 닫고 다시 여는 데 시간이 많이 걸립니다.
  • 이 작업은 주석을 사용하여 수행할 수 있습니다. 뿡 빵뀨 in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

단 한번의 해체

  • 한 번만 설정과 유사하게 한 번만 정리하는 방법도 사용할 수 있습니다. 모든 테스트 케이스 메소드 이후에 실행되며 @후에 주석이 실행되었습니다.
  • 서버 중지, 통신 링크 닫기 등에 유용합니다.
  • 이것은 다음을 사용하여 수행 할 수 있습니다. @방과후 주석
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit 테스트 스위트

지정된 순서로 여러 테스트를 실행하려면 모든 테스트를 한곳에 결합하면 됩니다. 이 곳을 테스트 모음이라고 합니다. 테스트 모음을 실행하는 방법과 그것이 어떻게 사용되는지에 대한 자세한 내용은 다음과 같습니다. JUnit 이 내용에서 다루겠습니다 지도 시간.

Junit 테스트 러너

JUnit 테스트 케이스 실행을 위한 도구를 제공합니다.

  • JUnit핵심 클래스는 이러한 테스트를 실행하는 데 사용됩니다.
  • 라는 메소드 runClasses 에 의해 제공 org.junit.runner를 참조하세요.JUnit핵심, 하나 이상의 테스트 클래스를 실행하는 데 사용됩니다.
  • 이 메소드의 반환 유형은 결과 객체 (org.junit.runner.결과), 테스트에 대한 정보에 액세스하는 데 사용됩니다. 더 명확하게 알아보려면 다음 코드 예제를 참조하세요.
public class Test {				
			public static void main(String[] args) {									
       		Result result = JUnitCore.runClasses(CreateAndSetName.class);					
			for (Failure failure : result.getFailures()) {							
         		System.out.println(failure.toString());					
      }		
      System.out.println(result.wasSuccessful());					
   }		
}      

위의 코드에서 "결과" 개체는 우리가 실행 중인 테스트 사례의 실패 및 성공적인 결과를 얻기 위해 처리됩니다.

먼저, JUnit 프로그램

SDLC, Java 프로그래밍 및 기본 사항에 대한 상당한 지식 소프트웨어 테스팅 과정을 이해하는 데 도움이 됩니다. JUnit 프로그램)

실제 예제를 사용하여 단위 테스트를 이해해 보겠습니다. 다음과 같이 주석이 달린 테스트 메서드를 사용하여 테스트 클래스를 만들어야 합니다. @테스트 아래와 같이 :

MyFirstClassTest.java

package guru99.JUnit;		

import static org.JUnit.Assert.*;				

import org.JUnit.Test;		

public class MyFirstClassTest {				

    @Test		
    public void myFirstMethod(){					
        String str= "JUnit is working fine";					
        assertEquals("JUnit is working fine",str);					
    }
}		

TestRunner.java

위의 테스트 메서드를 실행하려면 테스트 실행기를 만들어야 합니다. 테스트 실행기에서 테스트 클래스를 매개변수로 추가해야 합니다. JUnitCore의 runclasses() 메소드 . 테스트의 통과 또는 실패 여부에 따라 테스트 결과를 반환합니다.

자세한 내용은 아래 코드를 참조하세요.

package guru99.JUnit;		

import org.JUnit.runner.JUnitCore;		
import org.JUnit.runner.Result;		
import org.JUnit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
            Result result = JUnitCore.runClasses(MyFirstClassTest.class);					
			for (Failure failure : result.getFailures()) {							
              System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

산출

일단 TestRunner.java 테스트 메서드를 실행하면 실패 또는 통과로 출력됩니다. 아래 출력 설명을 찾으십시오.

  1. 이 예에서는 실행 후 MyFirstClassTest.java , 테스트가 통과되었으며 결과는 녹색으로 표시됩니다.
  2. 실패했다면 결과가 빨간색으로 표시되어야 하며 실패 추적에서 실패를 관찰할 수 있습니다. 아래를 참조하세요 JUnit GUI :

JUnit 프로그램 출력

제품 개요

  • JUnit 테스트가 포함된 메소드를 식별하기 위해 여러 주석을 지원하는 프레임워크입니다.
  • JUnit 라는 주석을 제공합니다. @시험, 이는 JUnit 그것이 사용되는 public void 메소드는 테스트 케이스로 실행될 수 있습니다.
  • 테스트 픽스쳐는 테스트 케이스가 실행되는 컨텍스트입니다.
  • 지정된 순서에 따라 여러 테스트를 실행하려면 모든 테스트를 한 곳에 결합하면 됩니다. 이곳을 테스트 스위트라고 합니다.
  • JUnit Test Runner라고 하는 테스트 사례를 실행할 수 있는 테스트 실행 도구를 제공합니다.