Maison >Java >javaDidacticiel >Comment implémenter les tests unitaires SpringBoot+TestNG
En raison du calendrier serré des tâches de développement et de l'interface incomplète et des données de base, même si un scénario de test d'interface complet est conçu, il est impossible d'effectuer des tests de couverture complets et efficaces et en raison de la direction d'un scénario de test d'interface unique ; la conception est constituée des paramètres d'entrée et des paramètres de sortie. À partir des paramètres d'entrée se trouvent la vérification des paramètres requis, le type de paramètre et la valeur limite du paramètre, puis la combinaison des paramètres d'entrée, par exemple, une interface a 5 paramètres, 3 requis, 2 facultatifs, et le type de données est string , int, etc., ainsi que des restrictions de longueur de caractères, donc le nombre de ces cas de test à interface unique sera conçu, euh... trop pour être compté si le nombre de paramètres d'entrée et de paramètres. les types augmentent, alors Ce nombre est indescriptible, il est donc nécessaire de prendre en compte la maîtrise par le testeur des méthodes de conception de cas de test d'interface.
1. Paramètres de type numérique
Division de classe d'équivalence : dans la plage de valeurs, en dehors de la plage de valeurs
Comment comprendre cela ? Quelles valeurs ou plages choisir, choisissez simplement entre l'intérieur et l'extérieur de la plage spécifiée ici
Analyse des valeurs limites : le maximum et le minimum sont justes, le maximum +1, le minimum -1, il s'agit de trouver la limite à partir du plage de valeurs, où le maximum et le minimum sont les limites du type de données
Conception de valeur spéciale : 0 ou nombres non positifs, des décimales peuvent être conçues
Traversal : pas de raccourcis, épuisez la plage de valeurs, celle-ci sera généralement filtrée par classes d'équivalence et valeurs limites, et n'a pas besoin d'être épuisé ;
2. Type de chaîne
Longueur de chaîne
Classe d'équivalence : à l'intérieur et à l'extérieur de la plage de valeurs
Valeur limite : limite de type de plage spécifiée ; parmi les caractères spéciaux du type chaîne, fait ici référence à 0 ou chaîne vide, null
Contenu de la chaîne
Types spécifiques : chinois et anglais, majuscules et minuscules, chinois simplifié et traditionnel
Caractères spéciaux : emoji, symboles de ponctuation, autres caractères spéciaux de la méthode de saisie
<!-- 首先创建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>conseils : @SpringBootApplication@RestController@RequestMapping et autres annotations ; 2. Importez l'environnement de développement local, Eclipse Vous devez installer le plug-in Lombok en externe. Ajoutez des paramètres au bas du fichier de configuration Eclipse Eclipse.ini : -javaagent:lombok.jar, avec une adresse de téléchargement en plus de l'installation. , et si l'équipe Java a configuré les dépendances dans le pom
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <optional>true</optional> </dependency>3 Je teste Staff, le plug-in jacoco a été installé dans l'environnement d'origine, donc le plug-in a également été ajouté au projet maven 056e62d4d7d2131df775d6a7718dcf97 :
<!-- 顺带提一下的另一个做代码覆盖率检测的插件 --> <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. Auparavant, Java était utilisé pour aider les tests jmeter À cette époque, j'étais habitué au framework de tests unitaires testng, et je n'avais pas encore fait de tests unitaires sur le framework springboot, les dépendances suivantes ont donc dû être ajoutées au fichier 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 Le développement est habitué à utiliser junit4.x pour les tests unitaires, qui est également utilisé. Le plug-in spring-boot-starter-test. hérite uniquement de différentes classes ;
# 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. À ce stade, vous pouvez appuyer sur Ctrl+1 sur Eclipse pour convertir les cas de test du framework junit en framework testng pour des tests heureux : Convertir en TestNG (Annotations) ; : ajoutez une dépendance swagger et générez des documents d'interface ; la dépendance lombok prend en charge les méthodes getter et setter des champs déclarés, et intègre également des outils tels que Log log.
Ne lisez pas mon article pour la suite, cela dépend de vos propres performances. Le cas de test unitaire est le suivant :
package com.text; import xxx.xxx.xxx public TestSampler extends BaseTest{ @BeforeClass void bf(){ // 测试写测试的前置条件,那些只需要执行一次的数据 } @Test void test_add(){ // 这里写需要测试的代码 } // 。。。 }.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!