ホームページ  >  記事  >  Java  >  SpringBoot+TestNG単体テストの実装方法

SpringBoot+TestNG単体テストの実装方法

王林
王林転載
2023-05-16 16:16:191747ブラウズ

背景

開発タスクのスケジュールがタイトで、インターフェイスと基本データが不完全なため、たとえ包括的なインターフェイス テスト ケースが設計されていても、カバレッジ テストを完全かつ効果的に実施することは不可能です。単一インターフェイスのテスト ケース設計のため、方向は入力パラメーターと出力パラメーターです。入力パラメーターから始まり、必要なパラメーターの検証、パラメーターの種類、パラメーターの境界値、そして入力パラメーターの組み合わせです。たとえば、インターフェイスには 5 つのパラメーターがあります。パラメータ、3 つは必須、2 つは必須ではありません。データ型には string、int などが含まれ、文字長の制限もあります。そのため、このような単一のインターフェイスのテスト ケースを設計する場合、ええと...入力パラメータや As パラメータの種類が増えると、その数は数えきれないほどになるため、テスターのインターフェイス テスト ケース設計手法の習熟を考慮する必要があります。

インターフェイス テスト ケースは入力パラメーター用に設計されています:

1. 数値型パラメーター

同値クラスの分割: 値の範囲内、値の範囲外、この理解方法?
インターフェイスのドキュメントに、このパラメータがどの値または範囲を取る必要があるかが記載されている場合は、ここで指定した範囲内と範囲外を選択するだけです。
境界値分析: 最大値と最小値は適切です。最大値 1、最小値 -1、 this 境界は値の範囲から検出されます。最大値と最小値はデータ型の境界です。
特別な値の設計: 0 または非正の数値、小数を設計できます
トラバーサル: ショートカットなし、値の範囲をすべて使い果たします、これは通常、価数カテゴリと境界値がフィルターで除外されるまで待機され、すべてを網羅する必要はありません;

2. 文字列型

文字列長
等価クラス: 内部および値の範囲外です
境界値: 指定された範囲境界、型境界
特別な値: これは、0 または空の文字列、null
String を参照する文字列型の特殊文字と区別する必要があります。 content
特定のタイプ: 中国語と英語、大文字と小文字、簡体字と繁体字中国語
特殊文字: 絵文字、句読点記号、入力方法のその他の特殊文字

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>

tips: @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 プロジェクトに追加されました5ece426e9affcbb0c3e68960d5f3bd04:

<!-- 顺带提一下的另一个做代码覆盖率检测的插件 -->
<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. Java を使って jmeter を支援したとき以前のテストでは、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 メソッドのほか、Log などのツールも統合されています。


残りは私の記事を読まないでください。それはあなた自身のパフォーマンスに依存します。単体テスト ケースは次のとおりです:

package  com.text;

import xxx.xxx.xxx

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

以上がSpringBoot+TestNG単体テストの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。