Ketimun dan Garis Besar Skenario

1. Perkenalan

Mentimun adalah kerangka kerja pengujian BDD (Behavioral Driven Development).

Menggunakan kerangka kerja untuk menulis skenario berulang dengan permutasi input / output yang berbeda bisa sangat memakan waktu, sulit untuk dipertahankan dan tentu saja membuat frustrasi.

Mentimun hadir dengan solusi untuk mengurangi upaya ini dengan menggunakan konsep Garis Besar Skenario ditambah Contoh . Pada bagian di bawah ini, kami akan mencoba mengambil contoh dan melihat bagaimana kami dapat meminimalkan upaya ini.

Jika Anda ingin membaca lebih lanjut tentang pendekatan dan bahasa Gherkin, lihat artikel ini.

2. Menambahkan Dukungan Mentimun

Untuk menambahkan dukungan untuk Ketimun dalam proyek Maven sederhana, kita perlu menambahkan dependensi berikut:

 info.cukes cucumber-junit 1.2.5 test   info.cukes cucumber-java 1.2.5 test   org.hamcrest hamcrest-library 1.3 test 

Tautan yang berguna ke dependensi dari Maven Central: cucumber-junit, cucumber-java, hamcrest-library

Karena ini adalah pustaka pengujian, mereka tidak perlu dikirimkan dengan yang sebenarnya dapat diterapkan - itulah sebabnya mereka semua tercakup dalam pengujian .

3. Contoh Sederhana

Mari kita tunjukkan cara yang membengkak dan cara ringkas dalam menulis file unggulan. Pertama mari kita tentukan logika yang ingin kita tulis tesnya:

Pertama mari kita tentukan logika yang ingin kita tulis tesnya:

public class Calculator { public int add(int a, int b) { return a + b; } }

4. Mendefinisikan Tes Ketimun

4.1. Mendefinisikan File Fitur

Feature: Calculator As a user I want to use a calculator to add numbers So that I don't need to add myself Scenario: Add two numbers -2 & 3 Given I have a calculator When I add -2 and 3 Then the result should be 1 Scenario: Add two numbers 10 & 15 Given I have a calculator When I add 10 and 15 Then the result should be 25 

Seperti yang terlihat di sini, 2 kombinasi angka yang berbeda telah diuji di sini logika penjumlahan. Selain angka, semua skenarionya persis sama.

4.2. Kode "Lem"

Untuk menguji skenario ini, saya penting untuk menentukan setiap langkah dengan kode yang sesuai, untuk menerjemahkan pernyataan menjadi bagian kode fungsional:

public class CalculatorRunSteps { private int total; private Calculator calculator; @Before private void init() { total = -999; } @Given("^I have a calculator$") public void initializeCalculator() throws Throwable { calculator = new Calculator(); } @When("^I add (-?\\d+) and (-?\\d+)$") public void testAdd(int num1, int num2) throws Throwable { total = calculator.add(num1, num2); } @Then("^the result should be (-?\\d+)$") public void validateResult(int result) throws Throwable { Assert.assertThat(total, Matchers.equalTo(result)); } }

4.3. Kelas Pelari

Untuk mengintegrasikan fitur dan kode perekat, kita dapat menggunakan pelari JUnit:

@RunWith(Cucumber.class) @CucumberOptions( features = { "classpath:features/calculator.feature" }, glue = {"com.baeldung.cucumber.calculator" }) public class CalculatorTest {}

5. Menulis Ulang Fitur Menggunakan Skenario Outlines

Kami melihat di Bagian 4.1. bagaimana mendefinisikan file fitur bisa menjadi tugas yang memakan waktu dan lebih rentan kesalahan. File fitur yang sama dapat dikurangi menjadi hanya beberapa baris menggunakan Skenario Outline:

Feature: Calculator As a user I want to use a calculator to add numbers So that I don't need to add myself Scenario Outline: Add two numbers  &  Given I have a calculator When I add  and  Then the result should be  Examples: | num1 | num2 | total | | -2 | 3 | 1 | | 10 | 15 | 25 | | 99 | -99 | 0 | | -1 | -10 | -11 |

Saat membandingkan Definisi Skenario reguler dengan Garis Besar Skenario , nilai tidak lagi perlu di-hardcode dalam definisi langkah. Nilai diganti dengan parameter sebagai dalam definisi langkah itu sendiri.

Di akhir Kerangka Skenario, nilai ditentukan dalam format tabel yang dipisahkan tanda pipa menggunakan Contoh .

Contoh untuk mendefinisikan Contoh ditunjukkan di bawah ini:

Examples: | Parameter_Name1 | Parameter_Name2 | | Value-1 | Value-2 | | Value-X | Value-Y |

6. Kesimpulan

Dengan artikel singkat ini, kami telah menunjukkan bagaimana skenario dapat dibuat secara umum. Dan juga kurangi upaya dalam menulis dan memelihara skenario ini.

Kode sumber lengkap artikel ini dapat ditemukan di GitHub.