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.
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;
Grenzwert: angegebene Bereichsgrenze; Von den Sonderzeichen des Zeichenfolgentyps bezieht sich hier auf 0 oder leere Zeichenfolge, null
String-InhaltSpezifische 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.
<!-- 首先创建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>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <optional>true</optional> </dependency>
<!-- 顺带提一下的另一个做代码覆盖率检测的插件 --> <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 -->
<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 执行框架即可,运行完在指定目录或当前控制台查看覆盖率 -->
# 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)
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!