<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>devkuma – Testing</title>
    <link>https://www.devkuma.com/jp/tags/testing/</link>
    <image>
      <url>https://www.devkuma.com/jp/tags/testing/logo/180x180.jpg</url>
      <title>Testing</title>
      <link>https://www.devkuma.com/jp/tags/testing/</link>
    </image>
    <description>Recent content in Testing on devkuma</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>jp</language>
    <managingEditor>kc@example.com (kc kim)</managingEditor>
    <webMaster>kc@example.com (kc kim)</webMaster>
    <copyright>The devkuma</copyright>
    
	  <atom:link href="https://www.devkuma.com/jp/tags/testing/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>テスト概要</title>
      <link>https://www.devkuma.com/jp/docs/testing/overview/</link>
      <pubDate>Thu, 15 Sep 2022 20:08:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/testing/overview/</guid>
      <description>
        
        
        &lt;h2 id=&#34;テストの種類&#34;&gt;テストの種類&lt;/h2&gt;
&lt;h3 id=&#34;単体テストunit-test&#34;&gt;単体テスト(Unit Test)&lt;/h3&gt;
&lt;p&gt;単体テストとは、クラスや関数単位で行うプログラムのテストである。主に設計どおりに動作するか、論理構造が適切かを確認する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;機能確認テスト
&lt;ul&gt;
&lt;li&gt;1つのモジュールが設計または仕様どおりに動作するかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;制御フローテスト
&lt;ul&gt;
&lt;li&gt;プログラムの論理構造に従って、「命令」や「分岐」などが動作するかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;データフローテスト
&lt;ul&gt;
&lt;li&gt;データや変数が「定義」「使用」「消滅」の順に実行されるかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;結合テストintegration-testing&#34;&gt;結合テスト(Integration Testing)&lt;/h3&gt;
&lt;p&gt;結合テストとは、単体テストで検証したプログラムを組み合わせて実行するテストである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;状態遷移テスト
&lt;ul&gt;
&lt;li&gt;状態遷移図に基づいて動作を確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;機能テスト&#34;&gt;機能テスト&lt;/h3&gt;
&lt;p&gt;機能テストとは、結合したプログラムを1つの機能としてテストすることである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;機能確認テスト&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;システムテスト&#34;&gt;システムテスト&lt;/h3&gt;
&lt;p&gt;システムテストは、個々のプログラムや機能を結合したプログラムが仕様書どおりに動作するかを検証するためのテストである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;確認テスト&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回帰テスト
&lt;ul&gt;
&lt;li&gt;プログラム機能を修正または変更した後、変更された部分が正しく動作するかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;デグレードテスト(Degrade test)
&lt;ul&gt;
&lt;li&gt;プログラム機能を追加または変更したことで、既存の機能が引き続き動作するかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;評価テスト&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;セキュリティテスト(Security Test)
&lt;ul&gt;
&lt;li&gt;悪意ある外部からの攻撃に対応できるか、脆弱性があるかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ユーザビリティテスト(Usability Test)
&lt;ul&gt;
&lt;li&gt;視覚的に見やすく、ユーザーが操作、学習、理解しやすいかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;障害許容性テスト
&lt;ul&gt;
&lt;li&gt;障害が発生した場合に指定された機能が維持されるかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;負荷テスト&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;性能テスト(Performance Test)
&lt;ul&gt;
&lt;li&gt;処理能力が仕様書を満たしているかを確認するテスト&lt;/li&gt;
&lt;li&gt;システムの要素が特定の状況でどの程度の性能を示すかを測定するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ロングランテスト
&lt;ul&gt;
&lt;li&gt;長期間の連続稼働でも処理能力や稼働率に問題が発生しないかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;負荷テスト(Load Test)
&lt;ul&gt;
&lt;li&gt;極端に高い負荷がかかる状況でも稼働できるかを確認するテスト&lt;/li&gt;
&lt;li&gt;特定の負荷を限られた時間だけ与え、Webアプリケーションに異常がないかを把握するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;持久テスト(Endurance Test)
&lt;ul&gt;
&lt;li&gt;Load Testと似ており、長期間負荷をかけて行うテスト。Agingテストともいう&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ストレステスト(Stress Test)
&lt;ul&gt;
&lt;li&gt;負荷の限界点を見つけるために、段階的に負荷を上げながら進めるテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ピーク負荷テスト(Peak Test)
&lt;ul&gt;
&lt;li&gt;一瞬だけ耐えきれないほどの負荷を与え、Webアプリケーションが停止せず、正常に動作して回復するかを見るテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ユーザーテスト&#34;&gt;ユーザーテスト&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;受け入れテスト
&lt;ul&gt;
&lt;li&gt;対象システムがユーザーの要求を満たすかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;運用テスト
&lt;ul&gt;
&lt;li&gt;実際の運用環境でシステムが正常に動作するかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;アルファテスト
&lt;ul&gt;
&lt;li&gt;開発者以外の人が操作し、欠陥があるかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ベータテスト
&lt;ul&gt;
&lt;li&gt;開発およびリリース前の製品を、開発者以外の一般ユーザーが操作し、欠陥がないかを確認するテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;テスト技法&#34;&gt;テスト技法&lt;/h2&gt;
&lt;h3 id=&#34;ホワイトボックステスト&#34;&gt;ホワイトボックステスト&lt;/h3&gt;
&lt;p&gt;ホワイトボックステストは、システムの内容を理解し、意識しながら行うテストを意味する。主に単体テストで使用され、次のテストに分類される。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;制御フローテスト&lt;/li&gt;
&lt;li&gt;データフローテスト&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ホワイトボックステストを実行するときは、論理構造、つまり処理フローや実行順序を可視化する必要がある。その方法の1つがフローチャートである。&lt;/p&gt;
&lt;h4 id=&#34;テストカバレッジ&#34;&gt;テストカバレッジ&lt;/h4&gt;
&lt;p&gt;テストカバレッジとは、システムまたはソフトウェアのテストについて論じるとき、テストがどれだけ十分であるかを表すものである。つまり、実行したテストがテスト対象をどれだけカバーしたかを比率で表す。&lt;/p&gt;
&lt;p&gt;代表的なコードカバレッジは次のとおりである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ステートメントカバレッジ(Statement Coverage)
&lt;ul&gt;
&lt;li&gt;ライン(Line)カバレッジとも呼ばれる。コードの1行が1回以上実行されれば満たされる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;デシジョンカバレッジ(Decision Coverage)
&lt;ul&gt;
&lt;li&gt;ブランチ(Branch)カバレッジとも呼ばれる。すべての条件式がtrue/falseを持てば満たされる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;コンディションカバレッジ(Condition Coverage)
&lt;ul&gt;
&lt;li&gt;ここでの条件はすべての条件式を指す。内部条件がtrue/falseのケースを満たすかを見る。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;その他にもコードカバレッジは存在する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;条件/判定カバレッジ(Condition/Decision Coverage)&lt;/li&gt;
&lt;li&gt;改良条件/判定カバレッジ(Modified Condition/Decision Coverage)&lt;/li&gt;
&lt;li&gt;複合条件カバレッジ(Multiple Condition Coverage)&lt;/li&gt;
&lt;li&gt;経路カバレッジ(All Path Coverage)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ブラックボックステスト&#34;&gt;ブラックボックステスト&lt;/h3&gt;
&lt;p&gt;ブラックボックステストは、ソフトウェアの内部構造や動作原理を知らない状態で動作を検査する方式である。&lt;/p&gt;
&lt;p&gt;ホワイトボックステストを用いた単体テストが終わると、システムの内部構造を意識しないテストを進める。&lt;br&gt;
主に機能テストとシステムテストに分類される。&lt;/p&gt;
&lt;p&gt;ブラックボックステストでは、次の順序でテストを実行する。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;試験の目的を定義する。&lt;/li&gt;
&lt;li&gt;機能を洗い出す。&lt;/li&gt;
&lt;li&gt;テスト観点を抽出する。例: フォームで投稿された値を確認する。&lt;/li&gt;
&lt;li&gt;テスト観点を機能に割り当てる。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;正常系ケース&lt;/li&gt;
&lt;li&gt;異常系ケース&lt;/li&gt;
&lt;li&gt;組み合わせたケース&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;テスト技法を決定する。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://velog.io/@lxxjn0/%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D-%EB%8F%84%EA%B5%AC-%EC%A0%81%EC%9A%A9%EA%B8%B0-1%ED%8E%B8-%EC%BD%94%EB%93%9C-%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80Code-Coverage%EA%B0%80-%EB%AD%94%EA%B0%80%EC%9A%94&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;コード分析ツール適用記 - 第1回、コードカバレッジ(Code Coverage)とは何か？&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>Testing</category>
      
    </item>
    
    <item>
      <title>ユニットテスト</title>
      <link>https://www.devkuma.com/jp/docs/testing/unit/</link>
      <pubDate>Thu, 15 Sep 2022 20:08:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/testing/unit/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ユニットテストunit-testing&#34;&gt;ユニットテスト(Unit Testing)&lt;/h2&gt;
&lt;p&gt;ユニットテストは、次の基本ガイドラインに従って作成する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;パブリックメソッドをテストする。&lt;/li&gt;
&lt;li&gt;テスト結果に影響を与える依存オブジェクトはモック化する。&lt;/li&gt;
&lt;li&gt;ディスク関連の依存は可能な限り避ける。&lt;/li&gt;
&lt;li&gt;ネットワーク関連の依存は使用しない。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;言語別の単体テストフレームワーク&#34;&gt;言語別の単体テストフレームワーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Java: &lt;a href=&#34;https://www.devkuma.com/docs/junit/&#34;&gt;JUnit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kotlin: &lt;a href=&#34;https://www.devkuma.com/docs/kotlin/mockk/&#34;&gt;MockK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;テストコードに対する個人的な考え&#34;&gt;テストコードに対する個人的な考え&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;テストコードは一種の保険のようなものだと思う。
&lt;ul&gt;
&lt;li&gt;つまり、コードを変更するときにテストコードがなければ、そのコードが本当に正しく動くのか不安になる。もしテストがあれば、その不安はなくなる。&lt;/li&gt;
&lt;li&gt;人がコードを書く以上、誰でもミスをする。テストコードを書くと、発生し得るすべてのケースを考え、実行しながら証明できる。&lt;/li&gt;
&lt;li&gt;なくても運用はできるが、あると心強いものだと思う。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;テストコードを書くことは、ロジックが正常に動作することの証明だと思う。
&lt;ul&gt;
&lt;li&gt;コードが正常に動作するよう実装されていることの証明である。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;テストコードは要求仕様書になり得る。
&lt;ul&gt;
&lt;li&gt;ソースコードがどのような要求条件で、どのように動作するのかを把握できるようになる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考文書&#34;&gt;参考文書&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;JUnit Best Practices Guide | HowToDoInJava&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>Testing</category>
      
    </item>
    
    <item>
      <title>TDD(Test Driven Development、テスト駆動開発)</title>
      <link>https://www.devkuma.com/jp/docs/testing/tdd/</link>
      <pubDate>Thu, 30 Sep 2021 14:47:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/testing/tdd/</guid>
      <description>
        
        
        &lt;h2 id=&#34;tddtest-driven-developmentとは&#34;&gt;TDD(Test Driven Development)とは？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;テスト駆動開発。&lt;/li&gt;
&lt;li&gt;まずテストコードを作成し、それを使ってテストを行い、正しく動作しているかのフィードバックを受けながら進める開発方法である。&lt;/li&gt;
&lt;li&gt;短い開発サイクルの繰り返しに依存する開発プロセスであり、開発者はまず要求される機能に対するテストケースを作成し、それに合うコードを書いてテストを通過させた後、状況に応じてリファクタリングする開発方式を意味する。&lt;/li&gt;
&lt;li&gt;開発者はテストを書くために該当機能の要求事項を確実に理解する必要があるため、開発前に要求事項へ集中できるようになる。一方で、テストのための参入障壁や作成すべきコード量の増加は短所として挙げられる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mockとは&#34;&gt;Mockとは？&lt;/h2&gt;
&lt;p&gt;実際のオブジェクトを作って使用するにはコストが大きい場合や、オブジェクト間の依存性が高く実装しにくい場合に作成する偽物のオブジェクトを指す。&lt;/p&gt;
&lt;h2 id=&#34;mockの使用例&#34;&gt;Mockの使用例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;テスト作成のための環境構築&lt;/li&gt;
&lt;li&gt;テストが特定のケースや瞬間に依存する場合&lt;/li&gt;
&lt;li&gt;テスト時間が長くかかる場合&lt;/li&gt;
&lt;li&gt;個人PCやサーバーの性能問題により動作に時間がかかる場合&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mockitoとは&#34;&gt;Mockitoとは？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ユニットテストのためのJava mocking frameworkである。&lt;/li&gt;
&lt;li&gt;Javaの単体テストでMockオブジェクトをサポートするテストフレームワークである。&lt;/li&gt;
&lt;li&gt;つまり、単体テストを行うためにMockを作成するフレームワークである。&lt;/li&gt;
&lt;li&gt;Mockオブジェクトの生成、Mockオブジェクトの動作指定、そしてテスト対象ロジックが正しく実行されたかの確認が可能である。&lt;/li&gt;
&lt;li&gt;一般的にSpringのようなWebアプリケーションを開発する場合、複数のオブジェクト間に依存関係が存在する。このような依存関係は単体テストの作成を難しくするが、それを解決するために偽物のオブジェクトを注入するMockitoライブラリを活用できる。&lt;/li&gt;
&lt;li&gt;Mockitoを活用することで、偽物のオブジェクトに望む結果をStubし、単体テストを進めることができる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mockオブジェクトの依存性注入&#34;&gt;Mockオブジェクトの依存性注入&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Mockitoでは、Mock(偽物)オブジェクトの依存性注入のために主に3つのアノテーションが使われる。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@Mock&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Mockオブジェクトを作成して返すアノテーション&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@Spy&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Stubしていないメソッドは元のメソッドをそのまま使用するアノテーション&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@InjectMocks&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@Mock&lt;/code&gt;または&lt;code&gt;@Spy&lt;/code&gt;で生成された偽物のオブジェクトを自動的に注入するアノテーション&lt;/li&gt;
&lt;li&gt;例えば&lt;code&gt;UserController&lt;/code&gt;の単体テストを作成したいとき、&lt;code&gt;UserService&lt;/code&gt;を使用しているなら、&lt;code&gt;@Mock&lt;/code&gt;アノテーションで偽物の&lt;code&gt;UserService&lt;/code&gt;を作成し、&lt;code&gt;@InjectMocks&lt;/code&gt;でそれを&lt;code&gt;UserController&lt;/code&gt;に注入できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>TDD</category>
      
      <category>Testing</category>
      
    </item>
    
    <item>
      <title>BDD(Behavior Driven Development、振る舞い駆動開発)</title>
      <link>https://www.devkuma.com/jp/docs/testing/bdd/</link>
      <pubDate>Wed, 29 Sep 2021 14:51:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/testing/bdd/</guid>
      <description>
        
        
        &lt;h2 id=&#34;bddとは&#34;&gt;BDDとは？&lt;/h2&gt;
&lt;p&gt;BDD(Behavior Driven Development)は振る舞い駆動開発である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BDDはTDDを基盤として派生した開発方法である。&lt;/li&gt;
&lt;li&gt;TDD(Test Driven Development)からさらに一歩進み、テストケース自体が要求仕様になるようにする開発方法である。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;bddの基本パターン&#34;&gt;BDDの基本パターン&lt;/h2&gt;
&lt;p&gt;BDDはシナリオを基にテストケースを作成し、関数単位のテストは推奨しない。シナリオは開発者ではない人が見ても理解できる程度のレベルが推奨される。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feature: テスト対象の機能/責任を明示する。&lt;/li&gt;
&lt;li&gt;Scenario: テスト目的に対する状況を説明する。&lt;/li&gt;
&lt;li&gt;Given: シナリオの進行に必要な値を設定する。&lt;/li&gt;
&lt;li&gt;When: シナリオを進行するために必要な条件を明示する。&lt;/li&gt;
&lt;li&gt;Then: シナリオを完了したときに保証すべき結果を明示する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;作成例&#34;&gt;作成例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-Kotlin&#34; data-lang=&#34;Kotlin&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5c35cc;font-weight:bold&#34;&gt;@Test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fun&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;`aliases for behavior driven development`&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// given
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;given&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;calculatorService&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20.0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10.0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)).&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;willReturn&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;30.0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// when
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;result&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculatorService&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20.0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10.0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// then
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Assert&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;assertThat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;30.0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;CoreMatchers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;`is`&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;result&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;関連動画&#34;&gt;関連動画&lt;/h2&gt;
&lt;iframe width=&#34;600&#34; height=&#34;350&#34; src=&#34;https://tv.kakao.com/embed/player/cliplink/414004682?service=kakao_tv&amp;section=channel&amp;profile=HIGH&amp;wmode=transparent&amp;popup=1&amp;autoplay=1&#34; title=&#34;Why TiDB?&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;em&gt;カカオ if - 「KotestがあるならTDDを聞いてBDDへ行こう！」&lt;/em&gt;&lt;/p&gt;

      </description>
      
      <category>BDD</category>
      
      <category>Testing</category>
      
    </item>
    
    <item>
      <title>F.I.R.S.T原則</title>
      <link>https://www.devkuma.com/jp/docs/testing/first/</link>
      <pubDate>Thu, 30 Sep 2021 14:47:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/testing/first/</guid>
      <description>
        
        
        &lt;h2 id=&#34;first原則とは&#34;&gt;F.I.R.S.T原則とは？&lt;/h2&gt;
&lt;p&gt;FIRST原則は、有名な書籍『Clean Code』の著者であるBob Martinが最初に提示した規則である。
ユニットテストを構成するために、F.I.R.S.T原則に従う。&lt;/p&gt;
&lt;h3 id=&#34;fast&#34;&gt;&lt;strong&gt;F&lt;/strong&gt;ast&lt;/h3&gt;
&lt;p&gt;ユニットテストは素早く実行され、素早く結果が分かる必要がある。&lt;br&gt;
そのため、行う作業の単位はできるだけ小さくなければならない。また、速いテストを行うには実際のサーバーやデータベースを使わず、偽物のデータ、つまりモックデータを作ってテストを進める必要がある。&lt;/p&gt;
&lt;h3 id=&#34;isolated--independent&#34;&gt;&lt;strong&gt;I&lt;/strong&gt;solated / Independent&lt;/h3&gt;
&lt;p&gt;ユニットテストはそれ自体だけで実行される必要がある。&lt;br&gt;
つまり、独立していなければならず、他のテストに依存したり影響を与えたりしてはならない。&lt;/p&gt;
&lt;h3 id=&#34;repeatable&#34;&gt;&lt;strong&gt;R&lt;/strong&gt;epeatable&lt;/h3&gt;
&lt;p&gt;ユニットテストは繰り返し可能でなければならない。&lt;br&gt;
テストをどこで、どのように、何回実行しても同じ結果が出る必要がある。&lt;/p&gt;
&lt;h3 id=&#34;self-validating&#34;&gt;&lt;strong&gt;S&lt;/strong&gt;elf-validating&lt;/h3&gt;
&lt;p&gt;ユニットテストは自己検証できなければならない。&lt;br&gt;
テスト自体で成功か失敗かの結果が出る必要があり、それは自動的に行われなければならない。&lt;/p&gt;
&lt;h3 id=&#34;thorough--timely&#34;&gt;&lt;strong&gt;T&lt;/strong&gt;horough / Timely&lt;/h3&gt;
&lt;p&gt;ユニットテストは徹底的で、適切なタイミングで作成されなければならない。&lt;br&gt;
徹底的であるとは、すべてのデータを検査する必要があるということであり、最小から最大までの範囲を含め、役割によって変わるデータ、ユーザーの場合と管理者の場合の両方をテストできなければならない。また、どのケースが失敗、つまり例外やエラーになるかもテストしなければならない。&lt;/p&gt;
&lt;h2 id=&#34;参考文書&#34;&gt;参考文書&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://howtodoinjava.com/best-practices/first-principles-for-good-tests/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;FIRST Principles for Writing Good Unit Tests | HowToDoInJava&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>Testing</category>
      
    </item>
    
    <item>
      <title>WebClientテスト - MockWebServerで外部API呼び出しメソッドをテストする</title>
      <link>https://www.devkuma.com/jp/docs/mock-web-server/</link>
      <pubDate>Sat, 17 Dec 2022 16:31:28 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/mock-web-server/</guid>
      <description>
        
        
        &lt;h2 id=&#34;概要&#34;&gt;概要&lt;/h2&gt;
&lt;p&gt;最近のほとんどのサービスではREST APIを呼び出すことが想定される。SpringはRESTクライアント構築のためにいくつかの選択肢を提供しており、WebClientを推奨している。&lt;/p&gt;
&lt;p&gt;ここでは、WebClientを使ってAPIを呼び出すサービスを単体テストする方法を説明する。&lt;/p&gt;
&lt;h2 id=&#34;mockwebserverとは&#34;&gt;MockWebServerとは？&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/square/okhttp/tree/master/mockwebserver&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Squareチームが作成したMockWebServer&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;は、HTTP Requestを受け取りResponseを返す小さくシンプルなWebサーバーである。&lt;/p&gt;
&lt;p&gt;WebClientやRestTemplateなどのClientを使ってHTTPを呼び出すメソッドのテストコードを書くとき、このMockWebServerを呼び出すようにすれば簡単にテストコードを書ける。Spring Teamもこの種のテストではMockWebServerの使用を推奨しているという。&lt;/p&gt;
&lt;h2 id=&#34;簡単なwebclientプロジェクト作成&#34;&gt;簡単なWebClientプロジェクト作成&lt;/h2&gt;
&lt;p&gt;MockWebServerを使う前に、まずテスト対象となる簡単な&lt;code&gt;WebClient&lt;/code&gt;プロジェクトを作成する。サンプルではSpring Initializrを使い、Java 11、Gradle、Spring Boot 2.7.6、&lt;code&gt;webflux&lt;/code&gt;依存関係でプロジェクトを生成する。&lt;/p&gt;
&lt;p&gt;データを受け取るDTOオブジェクトを作成し、&lt;code&gt;WebClient&lt;/code&gt;で&lt;code&gt;/users/{id}&lt;/code&gt;を呼び出して&lt;code&gt;Mono&amp;lt;User&amp;gt;&lt;/code&gt;を返すサービスコードを作成する。&lt;/p&gt;
&lt;h2 id=&#34;mockwebserverの適用&#34;&gt;MockWebServerの適用&lt;/h2&gt;
&lt;h3 id=&#34;依存関係の追加&#34;&gt;依存関係の追加&lt;/h3&gt;
&lt;p&gt;MockWebServerを使用するため、テスト依存関係を追加する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;dependencies&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;testImplementation&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;com.squareup.okhttp3:mockwebserver&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;テストコードにmockwebserverを追加&#34;&gt;テストコードにMockWebServerを追加&lt;/h3&gt;
&lt;p&gt;テストコードでは、&lt;code&gt;@BeforeAll&lt;/code&gt;で&lt;code&gt;MockWebServer&lt;/code&gt;オブジェクトを作成して起動し、&lt;code&gt;@AfterAll&lt;/code&gt;で終了する。&lt;/p&gt;
&lt;h3 id=&#34;サービスにwebclientを生成して渡す&#34;&gt;サービスにWebClientを生成して渡す&lt;/h3&gt;
&lt;p&gt;MockWebServerのポートを使ったbase URLで&lt;code&gt;WebClient&lt;/code&gt;を作成し、サービスへ渡す。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5c35cc;font-weight:bold&#34;&gt;@BeforeEach&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;initialize&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;final&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;baseUrl&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c4a000&#34;&gt;format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;http://localhost:%s&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mockWebServer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c4a000&#34;&gt;getPort&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;());&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;final&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WebClient&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webClient&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WebClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c4a000&#34;&gt;create&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;baseUrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;userService&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;UserService&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このようにすると、テスト実行時に実際の外部URLではなく&lt;code&gt;MockWebServer&lt;/code&gt;が呼び出される。&lt;/p&gt;
&lt;h3 id=&#34;任意のresponseを作成&#34;&gt;任意のResponseを作成&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;MockResponse&lt;/code&gt;を作成し、bodyとheaderを設定して&lt;code&gt;enqueue&lt;/code&gt;に入れる。MockWebServerはenqueueされた順番でレスポンスを返す。&lt;/p&gt;
&lt;h3 id=&#34;requestのチェック&#34;&gt;Requestのチェック&lt;/h3&gt;
&lt;p&gt;レスポンス値だけでなく、&lt;code&gt;takeRequest()&lt;/code&gt;を使ってリクエスト内容も確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;final&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;RecordedRequest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;recordedRequest&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mockWebServer&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c4a000&#34;&gt;takeRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;assertAll&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;assertEquals&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;GET&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;recordedRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c4a000&#34;&gt;getMethod&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()),&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;assertEquals&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/users/3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;recordedRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c4a000&#34;&gt;getPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参照&#34;&gt;参照&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/square/okhttp/blob/master/mockwebserver/README.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;square/okhttp | GitHub&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.baeldung.com/spring-mocking-webclient&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mocking a WebClient in Spring | Baeldung&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;上記のサンプルコードは&lt;a href=&#34;https://github.com/devkuma/spring-tutorial/tree/main/spring-mockwebserver&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;で確認できる。&lt;/p&gt;
&lt;/div&gt;

      </description>
      
      <category>Testing</category>
      
      <category>Java</category>
      
    </item>
    
  </channel>
</rss>
