Heim > Java > javaLernprogramm > Hauptteil

So implementieren Sie SpringBoot+TestNG-Unit-Tests

王林
Freigeben: 2023-05-16 16:16:19
nach vorne
1725 Leute haben es durchsucht

Hintergrund

Aufgrund des engen Zeitplans der Entwicklungsaufgaben und der unvollständigen Schnittstellen- und Basisdaten ist es unmöglich, Abdeckungstests vollständig und effektiv durchzuführen, selbst wenn ein umfassender Schnittstellentestfall entworfen wird Das Design besteht aus Eingabeparametern und Ausgabeparametern. Ausgehend von den Eingabeparametern sind die erforderliche Parameterüberprüfung, der Parametertyp und der Parametergrenzwert erforderlich. Anschließend gibt es eine Kombination aus Eingabeparametern. Beispielsweise verfügt eine Schnittstelle über 5 Parameter, 3 erforderlich und 2 optional. und der Datentyp ist string, int usw., und es gibt Einschränkungen bei der Zeichenlänge, sodass die Anzahl solcher Einzelschnittstellen-Testfälle so groß ist, dass sie nicht gezählt werden kann Die Typen nehmen dann zu. Diese Zahl ist unbeschreiblich, daher ist es notwendig, die Beherrschung der Entwurfsmethoden für Schnittstellentestfälle durch den Tester zu berücksichtigen.

Schnittstellentestfälle sind für Eingabeparameter konzipiert:

Numerische Typparameter

Äquivalenzklasseneinteilung: innerhalb des Wertebereichs, außerhalb des Wertebereichs
Wenn das Schnittstellendokument beschreibt, was dieser Parameter sein sollte Welche Werte oder Bereiche Sie auswählen möchten, wählen Sie einfach zwischen innerhalb und außerhalb des hier angegebenen Bereichs.
Randwertanalyse: Das Maximum und das Minimum sind genau richtig, das Maximum +1, das Minimum -1. Dies dient dazu, die Grenze von zu finden Wertebereich, wobei das Maximum und das Minimum die Datentypgrenzen sind.
Spezielles Wertedesign: 0 oder nicht positive Zahlen, Dezimalzahlen können entworfen werden Grenzwerte und müssen nicht ausgeschöpft werden;

String-Länge: Äquivalenzklasse: innerhalb und außerhalb des Wertebereichs

Grenzwert: angegebene Bereichsgrenze; Von den Sonderzeichen des Zeichenfolgentyps bezieht sich hier auf 0 oder leere Zeichenfolge, null

String-Inhalt

Spezifische Typen: Chinesisch und Englisch, Groß- und Kleinschreibung, vereinfachtes und traditionelles Chinesisch
Sonderzeichen: Emoji, Satzzeichen, andere Sonderzeichen der Eingabemethode

3. Seltene Array- oder verknüpfte Listentypen: Es kann sich um int[] oder string[] handeln, daher werde ich hier nicht auf Details eingehen.

Design für Geschäftslogik, Design für Ausgabeparameter usw. Insbesondere die Geschäftslogik verwendet im Allgemeinen ein Vorwärtsanwendungsfalldesign, und eine kleine Anzahl abnormaler Szenarien wird durch Eingabeparameter entworfen. Das Design von Ausgabeparametern kann nahezu die erwarteten Ergebnisse erzielen Eingabeparameterdesign.

Zurück zum Geschäft!

1. Verwenden Sie Eclipse lokal als Java-Entwicklungstool und unterstützen Sie die Python-Umgebungsprogrammierung, sodass Sie Pycharm und IDEA nicht gleichzeitig verwenden möchten.

<!-- 首先创建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>
Nach dem Login kopieren

Tipps: @SpringBootApplication@RestController@RequestMapping

2. Importieren Sie die lokale Entwicklungsumgebung Eclipse. Fügen Sie zusätzlich zur Installation die Parameter am Ende der Eclipse-Konfigurationsdatei eclipse.ini hinzu: -javaagent:lombok.jar , und ob das Java-Team Abhängigkeiten im pom

<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
    <version>1.18.12</version>
 <optional>true</optional>
</dependency>
Nach dem Login kopieren

3 konfiguriert hat. Ich teste Staff, das Jacoco-Plug-in wurde in der ursprünglichen Umgebung installiert, daher wurde das Plug-in auch zum Maven-Projekt hinzugefügt :

<!-- 顺带提一下的另一个做代码覆盖率检测的插件 -->
<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 -->
Nach dem Login kopieren

4. Zuvor wurde Java zur Unterstützung von Jmeter-Tests verwendet. Zu dieser Zeit war ich an das testng-Unit-Testing-Framework gewöhnt und hatte noch keine Unit-Tests durchgeführt auf dem Springboot-Framework, daher mussten der POM-Datei die folgenden Abhängigkeiten hinzugefügt werden:

<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 执行框架即可,运行完在指定目录或当前控制台查看覆盖率 -->
Nach dem Login kopieren

5 Die Entwicklung ist es gewohnt, junit4.x für Unit-Tests zu verwenden, das auch das Spring-Boot-Starter-Test-Plug-In verwendet erbt nur verschiedene Klassen;

# 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)
Nach dem Login kopieren

6. An dieser Stelle können Sie Strg+1 auf Eclipse drücken, um die Testfälle des Junit-Frameworks für ein glückliches Testen zu konvertieren: In TestNG konvertieren (Anmerkungen); : Swagger-Abhängigkeit hinzufügen und Schnittstellendokumente generieren; Lombok-Abhängigkeit unterstützt Getter- und Setter-Methoden deklarierter Felder und integriert auch Tools wie Log Log.

Lesen Sie meinen Artikel nicht für den Rest, es hängt von Ihrer eigenen Leistung ab. Der Unit-Testfall ist wie folgt:

rrree

Das obige ist der detaillierte Inhalt vonSo implementieren Sie SpringBoot+TestNG-Unit-Tests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!