> Java > Java시작하기 > 본문

화이트박스 테스트 프레임워크(JUnit) 사용

**
풀어 주다: 2021-12-08 19:22:02
원래의
3536명이 탐색했습니다.

Junit 프레임워크:

Junit은 오픈 소스 Java 유닛 테스트 프레임워크입니다.

오늘은 junit5를 소개하겠습니다. junit5는 Junit Platform, Junit Jupiter, Junit Vintage 등 세 가지 하위 프로젝트 모듈로 구성되어 있습니다. Java 8 이상을 지원합니다. 여기서 사용하는 편집기는 IntelliJ IDEA입니다. 전체 프로젝트의 메소드 인터페이스가 원활한지 최종 결과만 확인하면 됩니다. 각 단위 테스트 케이스는 상대적으로 독립적이며 Junit에 의해 시작되고 자동으로 호출됩니다. 추가 호출 문을 추가할 필요가 없습니다.

다른 테스트 방법에 영향을 주지 않고 테스트 방법을 추가, 삭제 및 차단합니다.

Junit은 화이트박스 테스트에 주로 사용됩니다.

1. 테스트 계획 단계: 요구 사항 사양에 따라 테스트 일정을 개발합니다.

2. 테스트 설계 단계: 코드의 기능에 따라 테스트 케이스를 수동으로 설계하여 기본적인 기능 테스트를 수행합니다. 프로그래밍 지침에 따라 소프트웨어 구조가 구분되고 특정 표준화된 방법에 따라 테스트 케이스가 설계됩니다.

3. 테스트 실행 단계: 테스트 케이스를 입력하고 테스트 결과를 받습니다.

4. 테스트 요약 단계: 테스트 결과를 코드의 예상 결과와 비교하고, 오류의 원인을 분석하고, 오류를 찾아 해결합니다.

다음으로 내부 주석을 소개하겠습니다.

@Test: 속성을 선언하지 않고 테스트 방법을 나타냅니다.

@ParameterizedTest: 메서드가 테스트 메서드임을 나타냅니다. 또한 이 주석을 사용하면 다른 사람을 사용하여 테스트 메서드를 여러 번 실행할 수도 있습니다.

@RepeatedTest: 이 주석을 사용하면 테스트 메서드에서 반복 실행 횟수를 맞춤 설정할 수 있습니다.

@TestFactory: 메서드가 데이터 기반 동적 테스트 데이터 소스를 기반으로 함을 나타냅니다.

@Displayname: 테스트 클래스 또는 테스트 메서드에 대한 사용자 정의 표시 이름을 선언합니다.

@BeforeEach: 각 테스트 메서드가 실행되기 전에 지정된 메서드가 실행됨을 나타냅니다.

@AfterEach: 각 테스트 메서드가 실행된 후에 지정된 메서드가 실행됨을 나타냅니다.

@BeforeAll: 현재 클래스의 모든 테스트 메서드보다 먼저 실행되며 이 메서드에는 일부 초기화 코드가 포함될 수 있습니다.

@AfterAll: 현재 클래스의 모든 테스트 메소드 이후에 실행됩니다.

@Disabled: 테스트 클래스 또는 메서드가 유효하지 않음을 나타냅니다.

어설션:

실패: 어설션 테스트에 실패했습니다.

AssertTrue/asserFalse: 참 또는 거짓을 주장합니다.

AssertNull/assertNotNull: Assert가 null이거나 null이 아닙니다.

assertEquals/assertNotEquals: 두 값이 동일하지 않다고 주장합니다.

AssertArrayEquals: 모든 배열 요소가 동일하다고 주장합니다.

AssertSame/assertNotSame: 두 개체가 동일한지 여부를 확인합니다.

AssertThrows/assertDoesNotThrow: 예외가 발생하는지 여부를 확인합니다.

AssertAll: 여러 조건이 충족되는지 확인

아래에서 클래스를 만들고 여러 메서드를 만듭니다.

package test;//包机制
import java.lang.reflect.Array;
public class MixedOperation {
    public int mixeOperation(int x,int y){
        return division((x+y),y);
    }
    public int division(int x,int y){
        int result=(x/y);
        return result;
    }
    public static void main(String[] args) {
      MixedOperation mixedOperation=new MixedOperation();
      System.out.println(mixedOperation.mixeOperation(5,1));
    }
}
로그인 후 복사

MixedOperation이라는 클래스를 만듭니다.

package test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
public class MixedOperationTest {
    private MixedOperation mixedOperation;
    @BeforeEach
    public void init(){
      mixedOperation=new MixedOperation();
    }
    @Test
    public void successTest(){
        System.out.println("run a test:x=4,y=2");
        int result=mixedOperation.mixeOperation(4,2);
        Assertions.assertEquals(3,result);
    }
   /* @DisplayName("失败")
    public void errorTest(){`
        System.out.println("run a test:x=4,y=0");
        ArithmeticException exception=new ArithmeticException(
                ArithmeticException.class -> {
            mixedOperation.mixeOperation(4, 0);
        }
        );
    }*/
    @Disabled("参数")
    @Test
    @DisplayName("参数")
    @ParameterizedTest
    @CsvSource({"6,3,3","5,2,3","6,2,4"})
    public void caTest(int x,int y,int excepted){
        System.out.println("run a test :x="+x+"y="+y);
        System.out.println(excepted);
        int t= mixedOperation.mixeOperation(x,y);
        Assertions.assertEquals(excepted,t);
    }
    @Disabled
    @Test
    public void  Next(){
       System.out.println("抛出一个异常");
       System.out.println(Assertions.assertThrows(IllegalArgumentException.class, () ->mixedOperation.mixeOperation(2,0)));
    }
    @Disabled
    @Test
    void error(){
        Assertions.assertThrows(Exception.class,()->{Assertions.assertEquals(1,0);});
    }
    @Test
    void sure(){
        int result=mixedOperation.mixeOperation(4,2);
        Assertions.assertTrue(3==result);//断言相等
    }
}
로그인 후 복사

여기서 MixedOperationTest Class라는 테스트를 만듭니다. 추천: "

java 비디오 튜토리얼

"

위 내용은 화이트박스 테스트 프레임워크(JUnit) 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿