spock integration
統合テスト(Restサービスなど)および機能テスト(Seleniumを使用)用のスポック:
について調べた スポックでのモック、スタブ、スパイ 前のチュートリアルで。
これで Spockに関する完全なトレーニングチュートリアルシリーズ 、 これまで、Spockフレームワークを使用して単体テストを作成する方法について説明しました。単体テスト。通常、すべての統合ポイントまたは外部呼び出しがモック呼び出しまたはスタブに置き換えられている単一のクラスをテストします。
対照的に、統合テストでは、2つの部分の間の統合ポイントをテストします。 例えば、 2つのサービス間の契約のテスト、サービスとデータベース間の統合のテストなど。
このチュートリアルでは、Spockの使用方法を学習します。 統合テスト (RESTサービスのように)そして 機能テスト 。 例えば 、スポックとセレンの統合など。
これがビデオチュートリアルです:
学習内容:
SpringSpockの統合
SpockをSpringブートMVCベースのアプリと統合する方法の例を使ってこれを理解してみましょう。
Windows10に最適なファイアウォールソフトウェア
Springには豊富なアノテーションのセットがあり、JUnitとうまく統合されていますが、Spockは、読みやすいBDDスタイルのテストアプローチを追加または追加するのに役立ち、テスト仕様を非常に読みやすくします。
アプリケーションについて
GradleベースのSpringBoot Starterアプリケーションを使用し、RESTベースのコントローラーがエンドポイントを実装します。
必要な依存関係
Spring Bootの依存関係に加えて、通常のGroovyコンパイルの依存関係とSpockコアの依存関係を追加します。別のスポックベースの依存関係は スポックスプリング 、Spock仕様でSpringベースのアノテーションを使用できるようにします。
以下に、必要な依存関係のリストを示します。
- 実装「org.springframework.boot:spring-boot-starter」
- testImplementation‘org.springframework.boot:spring-boot-starter-test ’
- 「org.codehaus.groovy:groovy-all:2.4.8」をコンパイルします
- testCompile「org.spockframework:spock-core:1.2-groovy-2.4」
- testCompileグループ:「org.spockframework」、名前:「spock-spring」、バージョン:「1.2-groovy-2.4」
入門
実際のテストを始めましょう。
最初のテストでは、追加したコントローラークラスに対してBeanが作成されるかどうかを確認します。このため、アプリケーションはテストの実行時に開始する必要があります。
これを実現するために、@を追加します SpringBootTest テストが実行される前にアプリケーションコンテキストを確実に実行するアノテーション。
以下はテストコードです。
@SpringBootTest class SampleSpringSpec extends Specification { @Autowired private WebController webController def 'when context is loaded then controller bean is created'() { expect: 'the WebController is created' webController != null } }
上記のコードでは、使用したことがわかります @SpringBootTest テストが実行される前に、ApplicationContextを確実に開始するアノテーション。また、Springアノテーションに従ってWebControllerBeanを自動配線しました。
このテストは、WebコントローラーBeanがアプリケーションコンテキストの一部としてインスタンス化されることを検証します。
別のテストを見てみましょう。ここでは、Webコントローラーによって公開されたエンドポイントに到達し、Springフレームワークテストクラス(MockMvcとMockMvcRequestBuilders)を介して応答コードと応答テキストを検証します。
以下のテストコードを参照してください。
@AutoConfigureMockMvc(secure=false) @WebMvcTest() class SampleMvcSpec extends Specification{ @Autowired private MockMvc mvc def 'assert response and status code for /greeting'() { expect: 'status code as 200 and response string as Hello world!' mvc.perform(MockMvcRequestBuilders.get('/hello')) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn().response.contentAsString == 'Hello world!' } }
SpockSeleniumの統合
これがビデオチュートリアルです:
次に、Spockを使用してSeleniumベースのテストを統合する方法の例を見てみましょう。これらは他の特定の依存関係を必要としませんが、一般に、BDDを使用してセレンテストをより効果的に編成するために既存の方法を使用できます。
これで 例、 Google検索でキーワードを検索し、検索結果ページのタイトルを確認しようとするChromeWebDriverを介した簡単なセレンテストが表示されます。
class SeleniumSpec extends Specification { private static def WebDriver driver = new ChromeDriver() def 'cleanupSpec'() { if(driver != null) { driver.close() } } def 'selenium integration with spock'() { given: driver.navigate().to('https://www.google.co.in') WebElement searchBox = driver.findElement(By.cssSelector('input(name=q)')); WebElement submitSearchButton = driver.findElement(By.cssSelector('input(name=btnK)')); when: searchBox.sendKeys('India') Thread.sleep(5000) submitSearchButton.click() def title = driver.getTitle() then: title.toLowerCase()contains('india') } }
ChromeDriverのwebdriverインスタンスを宣言し、仕様内で使用した方法に注目してください。
また、特定のステップで、テストの実行に必要なすべてのWeb要素を宣言/定義しました。
Spockフレームワークは、既存のAutomationフレームワークと統合して使用することもでき、Java / JUnitベースのテストをSpockに置き換えるだけで、Groovyの宣言型プログラミングの能力を活用できます。
結論
このチュートリアルでは、Spockベースのテストを他のフレームワークや統合テストやEnd-2-Endテストなどのテストタイプと統合するさまざまな方法について説明しました。
SpringフレームワークとのSpock統合およびSeleniumベースの統合テストの例を見ました。これらと同様に、Spockを使用して、RESTベースのAPIの統合テスト用のRestクライアントでテストを作成することもできます。
スポックインタビューの最も重要な質問のリストをカバーする次のチュートリアルで、スポックインタビューの準備をすばやく行ってください!!