> Java > java지도 시간 > SpringBoot+TestNG 단위 테스트 구현 방법

SpringBoot+TestNG 단위 테스트 구현 방법

王林
풀어 주다: 2023-05-16 16:16:19
앞으로
1803명이 탐색했습니다.

Background

빡빡한 개발 일정과 불완전한 인터페이스 및 기본 데이터로 인해 포괄적인 인터페이스 테스트 케이스를 설계하더라도 완전하고 효과적인 커버리지 테스트가 불가능하며 단일 인터페이스 테스트 케이스의 방향이 다르기 때문에; 설계는 입력 매개변수와 출력 매개변수이며 입력 매개변수에서 시작하여 필수 매개변수 확인, 매개변수 유형 및 매개변수 경계값이 있으며 입력 매개변수의 조합이 있습니다. 예를 들어 인터페이스에는 5개의 매개변수, 3개의 필수 매개변수, 2개의 선택 매개변수가 있습니다. 데이터 유형은 string, int 등이고 문자 길이 제한도 있으므로 이러한 단일 인터페이스 테스트 케이스의 수는 음... 입력 매개변수와 매개변수의 수가 너무 많아서 계산할 수 없습니다. 유형이 증가하면 이 숫자는 말로 표현할 수 없으므로 테스터의 인터페이스 테스트 케이스 설계 방법 숙달을 고려해야 합니다.

인터페이스 테스트 케이스는 입력 매개변수를 위해 설계되었습니다.

1. 숫자형 매개변수

동등 클래스 구분: 값 범위 내, 값 범위 외부
이 매개변수가 무엇인지 설명하는 경우 선택할 값 또는 범위는 여기에 지정된 범위 내부와 외부 중에서 선택하면 됩니다
경계값 분석: 최대값과 최소값이 딱 맞고, 최대값은 +1, 최소값은 -1입니다. 최대값과 최소값이 데이터 유형 경계인 값 범위
특수 값 설계: 0 또는 양수가 아닌 숫자, 소수가 설계될 수 있음
순회: 지름길 없음, 값 범위 소진, 이는 일반적으로 동등 클래스에 의해 필터링되고

2. 문자열 유형

문자열 길이
동등 클래스: 값 범위 내부 및 외부
경계 값: 지정된 범위 경계; 특수 값: 이를 구별해야 합니다. 문자열 유형의 특수 문자 중에서 여기서는 0 또는 빈 문자열, null을 나타냅니다.
문자열 내용
특정 유형: 중국어 및 영어, 대문자 및 소문자, 중국어 간체 및 번체
특수 문자: 이모티콘, 구두점 기호, 기타 특수 문자 입력 방법

3. 드문 배열 또는 연결 목록 유형: int[] 또는 string[]일 수 있습니다. 그의 설계 방법은 위의 방법을 벗어날 수 없으므로 여기서는 자세히 설명하지 않겠습니다.

비즈니스 로직 설계, 출력 매개변수 설계 등, 특히 비즈니스 로직은 일반적으로 전방 유스케이스 설계를 채택하며, 입력 매개변수를 통해 소량의 비정상적인 시나리오를 설계하면 거의 예상한 결과를 얻을 수 있습니다. 입력 매개변수 설계.

다시 사업을 시작하세요!

1. Eclipse를 Java 개발 도구로 로컬에서 사용하고 Python 환경 프로그래밍을 지원하므로 Pycharm과 IDEA를 동시에 사용하고 싶지 않습니다.

<!-- 首先创建springboot框架的maven项目pom添加如下依赖,ide可以安装插件:spring assistant,一键创建springboot框架的maven项目 -->

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.4.0</version><!-- 2.3.0.RELEASE版本可选 -->
   <relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- springboot框架的主要依赖 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <version>2.4.0</version>
</dependency>
로그인 후 복사

팁: @SpringBootApplication@RestController@RequestMapping 및 기타 주석

2. 로컬 개발 환경인 eclipse를 가져옵니다. Lombok 플러그인을 외부에서 설치해야 합니다. eclipse 구성 파일 eclipse.ini: -javaagent:lombok.jar에 다운로드 주소와 함께 매개변수를 추가합니다. , Java 팀이 pom

<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
    <version>1.18.12</version>
 <optional>true</optional>
</dependency>
로그인 후 복사

3에서 종속성을 구성했는지 여부를 테스트 중입니다. jacoco 플러그인이 원래 환경에 설치되었으므로 플러그인도 maven 프로젝트 < 그런데 Java 테스트 코드 커버리지에 대한 또 다른 종속성 cobertura>:

<!-- 顺带提一下的另一个做代码覆盖率检测的插件 -->
<dependency>
 <groupId>org.codehaus.mojo</groupId>
 <artifactId>cobertura-maven-plugin</artifactId>
 <version>2.7</version>
</dependency>

<plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.3</version>
      <configuration>
     <!--指定生成 .exec 文件的存放位置 -->
     <destFile>target/coverage-reports/jacoco-unit.exec</destFile>
     <!--Jacoco 是根据 .exec 文件生成最终的报告,所以需指定 .exec 的存放路径 -->
            <dataFile>target/coverage-reports/jacoco-unit.exec</dataFile>
     </configuration>
     <executions>
         <execution>
  <id>jacoco-initialize</id>
           <goals>
               <goal>prepare-agent</goal>
            </goals>
         </execution>
         <execution>
  <id>jacoco-site</id>
           <phase>package</phase>
            <goals>
             <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<!-- tips:jacoco在maven中执行的命令是:mvn clean jacoco:prepare-agent install jacoco:report -Dmaven.test.failure.ignore=true -->
로그인 후 복사

4. 이전에는 jmeter 테스트를 보조하기 위해 java를 사용했습니다. 당시에는 testng 단위 테스트 프레임워크에 익숙해서 아직 단위를 수행하지 않았습니다. springboot 프레임워크에서 테스트하므로 pom 파일에 다음 종속성을 추가해야 합니다:

<dependency>
    <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>

<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
 <groupId>org.testng</groupId>
 <artifactId>testng</artifactId>
 <version>6.9.10</version>
</dependency>
<!-- 右键选择Coverage as 执行框架即可,运行完在指定目录或当前控制台查看覆盖率 -->
로그인 후 복사

5. 개발에서는 단위 테스트에 junit4.x를 사용하는 데 익숙하며 이는 spring-boot-starter-test 플러그-

# junit4.x是如下使用:

import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
public class BaseTest  {
}

# 而换成testng就是如下使用:
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;

@SpringBootTest
public class BaseTest extends AbstractTestNGSpringContextTests {
}

# 同样是使用@SpringBootTest注解,但是它启动sprintboot服务不一样,testng必须继承AbstractTestNGSpringContextTests使用;
# 扩展:还可以是继承AbstractTransactionalTestNGSpringContextTests类,二选一;
# @SpringBootTest(classes={是你的SpringBoot启动app类}),例如:@SpringBootTest(classes=UserApplication.class)
로그인 후 복사

6. 이 시점에서 Eclipse에서 Ctrl+1을 눌러 행복한 테스트를 위해 junit 프레임워크의 테스트 케이스를 testng 프레임워크로 변환할 수 있습니다. TestNG로 변환(주석)

7. 확장: Swagger 종속성을 추가하고 인터페이스 문서를 생성합니다. Lombok 종속성은 선언된 필드의 getter 및 setter 메서드를 지원하고 로그 로그와 같은 도구도 통합합니다.

나머지 내용은 내 기사를 읽지 마세요. 단위 테스트 사례는 다음과 같습니다.

package  com.text;

import xxx.xxx.xxx

public TestSampler extends BaseTest{
    
    @BeforeClass
    void bf(){
        // 测试写测试的前置条件,那些只需要执行一次的数据
    }
    @Test
    void test_add(){
        // 这里写需要测试的代码
    }
    
//    。。。
}
로그인 후 복사

위 내용은 SpringBoot+TestNG 단위 테스트 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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