SpringBoot+TestNG単体テストの実装方法
背景
開発タスクのスケジュールがタイトで、インターフェイスと基本データが不完全なため、たとえ包括的なインターフェイス テスト ケースが設計されていても、カバレッジ テストを完全かつ効果的に実施することは不可能です。単一インターフェイスのテスト ケース設計のため、方向は入力パラメーターと出力パラメーターです。入力パラメーターから始まり、必要なパラメーターの検証、パラメーターの種類、パラメーターの境界値、そして入力パラメーターの組み合わせです。たとえば、インターフェイスには 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 プロジェクトに追加されました<ちなみに、Java テスト コード カバレッジ A 依存関係 cobertura を行う別の方法>:
<!-- 顺带提一下的另一个做代码覆盖率检测的插件 --> <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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Jasypt の概要 Jasypt は、開発者が最小限の労力で基本的な暗号化機能を自分のプロジェクトに追加できる Java ライブラリであり、暗号化の仕組みを深く理解する必要はありません。一方向および双方向暗号化の高いセキュリティ。標準ベースの暗号化テクノロジー。パスワード、テキスト、数値、バイナリを暗号化します... Spring ベースのアプリケーション、オープン API への統合、JCE プロバイダーでの使用に適しています... 次の依存関係を追加します: com.github.ulisesbocchiojasypt-spring-boot-starter2. 1.1 Jasypt の特典はシステムのセキュリティを保護し、コードが漏洩した場合でもデータ ソースは保証されます。

使用シナリオ 1. 注文は正常に行われましたが、支払いが 30 分以内に行われませんでした。支払いがタイムアウトになり、注文が自動的にキャンセルされました 2. 注文に署名があり、署名後 7 日間評価が行われませんでした。注文がタイムアウトして評価されない場合、システムはデフォルトでプラスの評価を設定します 3. 注文は正常に行われます。販売者が 5 分間注文を受け取らない場合、注文はキャンセルされます。 4. 配送がタイムアウトします。 SMS リマインダーをプッシュします... 遅延が長く、リアルタイム パフォーマンスが低いシナリオでは、タスク スケジュールを使用して定期的なポーリング処理を実行できます。例: xxl-job 今日は選択します

1. Redis は分散ロックの原則を実装しており、分散ロックが必要な理由 分散ロックについて話す前に、分散ロックが必要な理由を説明する必要があります。分散ロックの反対はスタンドアロン ロックです。マルチスレッド プログラムを作成するとき、共有変数を同時に操作することによって引き起こされるデータの問題を回避します。通常、ロックを使用して共有変数を相互に除外し、データの正確性を確保します。共有変数の使用範囲は同じプロセス内です。共有リソースを同時に操作する必要があるプロセスが複数ある場合、どうすれば相互排他的になるのでしょうか?今日のビジネス アプリケーションは通常マイクロサービス アーキテクチャであり、これは 1 つのアプリケーションが複数のプロセスをデプロイすることも意味します。複数のプロセスが MySQL の同じレコード行を変更する必要がある場合、順序の乱れた操作によって引き起こされるダーティ データを避けるために、分散が必要です。今回導入するスタイルはロックされています。ポイントを獲得したい

Springboot はファイルを読み取りますが、jar パッケージにパッケージ化した後、最新の開発にアクセスできません。jar パッケージにパッケージ化した後、Springboot がファイルを読み取れない状況があります。その理由は、パッケージ化後、ファイルの仮想パスが変更されるためです。は無効であり、ストリーム経由でのみアクセスできます。読み取ります。ファイルはリソースの下にあります publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

Springboot+Mybatis-plus が SQL ステートメントを使用して複数テーブルの追加操作を実行しない場合、私が遭遇した問題は、テスト環境で思考をシミュレートすることによって分解されます: パラメーターを含む BrandDTO オブジェクトを作成し、パラメーターをバックグラウンドに渡すことをシミュレートします。 Mybatis-plus で複数テーブルの操作を実行するのは非常に難しいことを理解してください。Mybatis-plus-join などのツールを使用しない場合は、対応する Mapper.xml ファイルを設定し、臭くて長い ResultMap を設定するだけです。対応する SQL ステートメントを記述します。この方法は面倒に見えますが、柔軟性が高く、次のことが可能です。

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivotal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

1. RedisAPI のデフォルトのシリアル化メカニズムである RedisTemplate1.1 をカスタマイズします。API ベースの Redis キャッシュ実装では、データ キャッシュ操作に RedisTemplate テンプレートを使用します。ここで、RedisTemplate クラスを開いて、クラスのソース コード情報を表示します。publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations、BeanClassLoaderAware{//キーを宣言、値の各種シリアル化メソッド、初期値は空 @NullableprivateRedisSe

プロジェクトでは、構成情報が必要になることがよくありますが、この情報はテスト環境と本番環境で構成が異なる場合があり、実際のビジネス状況に基づいて後で変更する必要がある場合があります。これらの構成をコードにハードコーディングすることはできません。構成ファイルに記述することをお勧めします。たとえば、この情報を application.yml ファイルに書き込むことができます。では、コード内でこのアドレスを取得または使用するにはどうすればよいでしょうか?方法は2つあります。方法 1: @Value アノテーションが付けられた ${key} を介して、構成ファイル (application.yml) 内のキーに対応する値を取得できます。この方法は、マイクロサービスが比較的少ない状況に適しています。方法 2: 実際には、プロジェクト、業務が複雑な場合、ロジック
