Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan ujian unit SpringBoot+TestNG

Bagaimana untuk melaksanakan ujian unit SpringBoot+TestNG

王林
Lepaskan: 2023-05-16 16:16:19
ke hadapan
1792 orang telah melayarinya

Latar Belakang

Disebabkan jadual tugas pembangunan yang padat dan antara muka yang tidak lengkap dan penyediaan data asas, walaupun kes ujian antara muka komprehensif direka, ujian liputan tidak dapat dijalankan sepenuhnya dan berkesan; kepada reka bentuk kes ujian antara muka tunggal Arah adalah parameter input dan parameter output Bermula dari parameter input ialah pengesahan parameter yang diperlukan, jenis parameter dan nilai sempadan parameter, dan kemudian gabungan parameter input Sebagai contoh, antara muka mempunyai 5 parameter , 3 diperlukan, dan 2 Ia tidak diperlukan Jenis data termasuk rentetan, int, dsb., dan terdapat juga sekatan panjang aksara Jadi apabila mereka bentuk kes ujian antara muka tunggal, akan ada, um... juga banyak untuk dikira Jika bilangan parameter input dan Apabila jenis parameter meningkat, bilangannya menjadi tidak terkata Oleh itu, adalah perlu untuk mempertimbangkan penguasaan kaedah reka bentuk kes ujian antara muka.

Kes ujian antara muka direka untuk parameter input:

1 Parameter jenis angka

Pembahagian kelas kesetaraan: dalam julat nilai, di luar julat nilai, ini Cara memahami. ?
Jika dokumen antara muka menerangkan nilai atau julat yang perlu diambil oleh parameter ini, cuma pilih dalam dan luar julat yang dinyatakan di sini
Analisis nilai sempadan: maksimum dan minimum adalah tepat, maksimum +1, minimum -1 , Ini adalah untuk mencari sempadan daripada julat nilai, dengan maksimum dan minimum ialah sempadan jenis data
Reka bentuk nilai khas: 0 atau nombor bukan positif, perpuluhan boleh direka
Traversal: tiada pintasan, habiskan julat nilai, ini secara amnya ialah Kelas kesetaraan dan nilai sempadan ditapis keluar dan tidak perlu dihabiskan; julat di dalam dan di luar

nilai sempadan: Tentukan sempadan julat;

Jenis khusus: Cina dan Inggeris, saiz Tulis, Cina Ringkas dan Tradisional

Aksara khas: emotikon emoji, simbol tanda baca, aksara khas lain bagi kaedah input


3. Tatasusunan jarang atau jenis senarai terpaut : seperti jenis senarai, yang mungkin int[] Ia boleh menjadi rentetan[], dan kaedah reka bentuknya tidak boleh lari daripada yang di atas, jadi saya tidak akan menerangkan butiran di sini.

Mereka bentuk untuk logik perniagaan, mereka bentuk untuk parameter output, dsb., terutamanya logik perniagaan secara amnya menggunakan reka bentuk kes penggunaan hadapan, dan sejumlah kecil senario tidak normal direka bentuk melalui parameter input Reka bentuk parameter output hampir selalu termasuk dalam reka bentuk parameter input boleh mendapatkan hasil yang diinginkan.

Kembali kepada perniagaan!

1. Gunakan eclipse secara tempatan sebagai alat pembangunan java dan menyokong pengaturcaraan persekitaran python, jadi anda tidak mahu menggunakan Pycharm dan IDEA pada masa yang sama

<!-- 首先创建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>
Salin selepas log masuk

petua: @SpringBootApplication@ RestController@RequestMapping dan anotasi lain

2. Import persekitaran pembangunan tempatan Eclipse perlu memasang pemalam lombok secara luaran. jar, dengan alamat muat turun, sebagai tambahan kepada pemasangan, dan sama ada pasukan java berada dalam pom Dependencies dikonfigurasikan dalam

<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
    <version>1.18.12</version>
 <optional>true</optional>
</dependency>
Salin selepas log masuk

3. Saya seorang penguji Pemalam jacoco telah dipasang dalam asal persekitaran, jadi pemalam juga telah ditambahkan pada projek maven:

<!-- 顺带提一下的另一个做代码覆盖率检测的插件 -->
<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 -->
Salin selepas log masuk

4. Apabila saya menggunakan java untuk membantu ujian jmeter sebelum ini, saya sudah biasa dengan rangka kerja ujian unit, dan saya belum lagi melakukan ujian unit pada rangka kerja springboot, jadi kebergantungan berikut perlu ditambahkan pada fail 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 执行框架即可,运行完在指定目录或当前控制台查看覆盖率 -->
Salin selepas log masuk

5 terbiasa menggunakan junit4.x untuk ujian unit, dan pemalam spring-boot-starter-test juga digunakan, tetapi kelas yang diwarisi adalah berbeza Pada ketika ini, anda boleh menekan Ctrl+1 pada eclipse untuk menukar kes ujian rangka kerja junit ke dalam rangka kerja testng untuk ujian yang menyenangkan: Tukar kepada TestNG (Anotasi); seperti Log.

Jangan baca artikel saya untuk selebihnya Ia bergantung pada prestasi anda sendiri Kes ujian unit adalah seperti berikut:

# 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)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan ujian unit SpringBoot+TestNG. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan