Integrasi Musim Semi Mentimun

1. Ikhtisar

Mentimun adalah kerangka pengujian yang sangat kuat yang ditulis dalam bahasa pemrograman Ruby, yang mengikuti metodologi BDD (pengembangan berbasis perilaku). Ini memungkinkan pengembang untuk menulis kasus penggunaan tingkat tinggi dalam teks biasa yang dapat diverifikasi oleh pemangku kepentingan non-teknis, dan mengubahnya menjadi pengujian yang dapat dijalankan, yang ditulis dalam bahasa yang disebut Gherkin.

Kami telah membahas ini di artikel yang berbeda.

Dan Integrasi Ketimun-Musim Semi dimaksudkan untuk mempermudah otomatisasi pengujian. Setelah kami memiliki tes Ketimun yang terintegrasi dengan Spring, kami harus dapat menjalankannya bersama dengan build Maven.

2. Ketergantungan Maven

Mari kita mulai menggunakan integrasi Cucumber-Spring dengan menentukan dependensi Maven - dimulai dengan dependensi Cucumber-JVM:

 io.cucumber cucumber-java 6.8.0 test 

Kami dapat menemukan Mentimun JVM versi terbaru di sini.

Selanjutnya, kami akan menambahkan dependensi pengujian JUnit dan Cucumber:

 io.cucumber cucumber-junit 6.8.0 test 

Cucumber JUnit versi terbaru dapat ditemukan di sini.

Dan akhirnya, ketergantungan Musim Semi dan Ketimun:

 io.cucumber cucumber-spring 6.8.0 test 

Sekali lagi, kita dapat melihat versi terbaru Musim Semi Ketimun di sini.

3. Konfigurasi

Sekarang kita akan melihat bagaimana kita dapat mengintegrasikan Ketimun dalam aplikasi Musim Semi.

Pertama, kita akan membuat aplikasi Spring Boot - untuk itu kita akan mengikuti artikel aplikasi Spring-Boot. Kemudian, kita akan membuat layanan REST Musim Semi dan menulis tes Ketimun untuknya.

3.1. Pengontrol REST

Pertama, mari buat pengontrol sederhana:

@RestController public class VersionController { @GetMapping("/version") public String getVersion() { return "1.0"; } }

3.2. Definisi Langkah Mentimun

Yang kita butuhkan untuk menjalankan tes Mentimun dengan JUnit adalah membuat satu kelas kosong dengan anotasi @RunWith (Cucumber.class) :

@RunWith(Cucumber.class) @CucumberOptions(features = "src/test/resources") public class CucumberIntegrationTest { }

Kita dapat melihat anotasi @CucumberOptions di mana kita menentukan lokasi file Gherkin yang juga dikenal sebagai file fitur. Pada titik ini, Ketimun mengenali bahasa Gherkin; Anda dapat membaca lebih lanjut tentang Gherkin di artikel yang disebutkan di pendahuluan.

Jadi sekarang, mari buat file fitur Mentimun:

Feature: the version can be retrieved Scenario: client makes call to GET /version When the client calls /version Then the client receives status code of 200 And the client receives server version 1.0

Skenario adalah untuk membuat panggilan GET ke layanan REST url / versi dan memverifikasi respon.

Selanjutnya, kita perlu membuat apa yang disebut kode lem. Ini adalah metode yang menghubungkan satu langkah Gherkin dengan kode Java.

Kita memiliki pilihan di sini - kita bisa menggunakan ekspresi ketimun atau ekspresi reguler di dalam anotasi. Dalam kasus kami, kami akan tetap menggunakan ekspresi reguler:

@When("^the client calls /version$") public void the_client_issues_GET_version() throws Throwable{ executeGet("//localhost:8080/version"); } @Then("^the client receives status code of (\\d+)$") public void the_client_receives_status_code_of(int statusCode) throws Throwable { HttpStatus currentStatusCode = latestResponse.getTheResponse().getStatusCode(); assertThat("status code is incorrect : "+ latestResponse.getBody(), currentStatusCode.value(), is(statusCode)); } @And("^the client receives server version (.+)$") public void the_client_receives_server_version_body(String version) throws Throwable { assertThat(latestResponse.getBody(), is(version)); }

Jadi sekarang mari kita mengintegrasikan tes Ketimun dengan Konteks Aplikasi Musim Semi. Untuk itu, kami akan membuat kelas baru dan menganotasinya dengan @SpringBootTest dan @CucumberContextConfiguration :

@CucumberContextConfiguration @SpringBootTest public class SpringIntegrationTest { // executeGet implementation }

Sekarang semua definisi Ketimun bisa masuk ke kelas Java terpisah yang memperluas SpringIntegrationTest :

public class StepDefs extends SpringIntegrationTest { @When("^the client calls /version$") public void the_client_issues_GET_version() throws Throwable { executeGet("//localhost:8080/version"); } }

Kami siap untuk uji coba sekarang.

Terakhir, kita dapat menjalankan cepat melalui baris perintah, cukup dengan menjalankan mvn clean install -Pintegration - Maven akan menjalankan tes integrasi dan menampilkan hasilnya di konsol.

3 Scenarios ([32m3 passed[0m) 9 Steps ([32m9 passed[0m) 0m1.054s Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.283 sec - in com.baeldung.CucumberTest 2016-07-30 06:28:20.142 INFO 732 --- [Thread-2] AnnotationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext: startup date [Sat Jul 30 06:28:12 CDT 2016]; root of context hierarchy Results : Tests run: 12, Failures: 0, Errors: 0, Skipped: 0 

4. Kesimpulan

Setelah mengonfigurasi Ketimun dengan Pegas, akan berguna untuk menggunakan komponen yang dikonfigurasi Pegas dalam pengujian BDD. Ini adalah panduan sederhana untuk mengintegrasikan tes Ketimun dalam aplikasi Spring-Boot.

Seperti biasa, semua contoh kode yang ditampilkan dalam tutorial ini tersedia di GitHub.