Garis Besar Timun dan Senario

1. Pengenalan

Timun adalah kerangka pengujian BDD (Behavioral Driven Development).

Menggunakan kerangka kerja untuk menulis senario berulang dengan permutasi input / output yang berbeza boleh memakan masa, sukar dijaga dan tentu saja mengecewakan.

Timun datang dengan penyelesaian untuk mengurangkan usaha ini dengan menggunakan konsep Skenario Garis Besar ditambah dengan Contoh . Di bahagian bawah, kami akan mencuba mengambil contoh dan melihat bagaimana kami dapat meminimumkan usaha ini.

Sekiranya anda ingin membaca lebih lanjut mengenai pendekatan dan bahasa Gherkin, lihat artikel ini.

2. Menambah Sokongan Timun

Untuk menambahkan sokongan untuk Timun dalam projek Maven yang sederhana, kita perlu menambahkan kebergantungan berikut:

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

Pautan berguna untuk pergantungan dari Maven Central: timun-junit, timun-java, hamcrest-library

Oleh kerana ini adalah ujian perpustakaan, mereka tidak perlu dihantar dengan yang sebenarnya dapat digunakan - itulah sebabnya mereka semua ujian dilingkupi.

3. Contoh Mudah

Mari tunjukkan cara kembung dan cara ringkas untuk menulis fail yang dipaparkan. Mari tentukan terlebih dahulu logik yang ingin kita tuliskan ujian untuk:

Mari kita tentukan terlebih dahulu logik yang ingin kita tuliskan ujian untuk:

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

4. Mendefinisikan Ujian Timun

4.1. Mendefinisikan Fail Ciri

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 dilihat di sini, 2 kombinasi nombor yang berbeza telah diuji di sini logik penambahan. Selain nombor, semua senario sama.

4.2. Kod "Lem"

Untuk menguji senario ini, saya perlu menentukan setiap langkah dengan kod yang sesuai, untuk menterjemahkan pernyataan ke dalam sekeping kod yang berfungsi:

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 ciri dan kod gam, kita dapat menggunakan pelari JUnit:

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

5. Menulis Semula Ciri Menggunakan Garis Besar Skenario

Kami melihat di Bahagian 4.1. bagaimana menentukan fail ciri boleh menjadi tugas yang memakan masa dan lebih banyak ralat. Fail ciri yang sama dapat dikurangkan menjadi hanya beberapa baris menggunakan Skenario Garis Besar:

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 |

Semasa membandingkan Definisi Skenario biasa dengan Garis Besar Skenario , nilai tidak perlu lagi dikodkan dalam definisi langkah. Nilai diganti dengan parameter sebagai dalam definisi langkah itu sendiri.

Pada akhir Skenario Garis Besar, nilai didefinisikan dalam format jadual dibatasi paip menggunakan Contoh .

Contoh untuk menentukan Contoh ditunjukkan di bawah:

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

6. Kesimpulannya

Dengan artikel ringkas ini, kami telah menunjukkan bagaimana senario dapat dibuat secara umum. Dan juga mengurangkan usaha dalam menulis dan mengekalkan senario ini.

Kod sumber lengkap artikel ini boleh didapati di GitHub.