Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi · Pelajaran

Melaksanakan Takrifan Langkah

Hubungkan fail ciri Gherkin dengan kod boleh laku dengan menulis takrifan langkah menggunakan rangka kerja BDD.

Pelajaran 3 daripada 411 langkah

Melaksanakan Takrifan Langkah ialah pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi merangkumi sejumlah 4 pelajaran.

Definisi Langkah: Jambatan Kod

Dalam Pembangunan Dipacu Tingkah Laku (BDD), fail ciri Gherkin menerangkan tingkah laku dalam bahasa biasa. Tetapi bagaimanakah aplikasi anda memahami arahan ini?

Di sinilah Step Definitions memainkan peranan! Ia ialah pautan penting yang menterjemahkan setiap langkah Gherkin (Given, When, Then) kepada kod boleh laku.

  • Ia ialah kaedah yang sepadan dengan corak Gherkin.
  • Rangka kerja BDD (seperti Cucumber) mencari dan menjalankan kaedah ini.

Contoh Kita: Kalkulator Mudah

Mari gunakan Calculator asas untuk menunjukkan cara definisi langkah berfungsi. Kelas ini akan menyimpan keadaan dan logik yang akan berinteraksi dengan langkah kita.

Cuba jalankan kalkulator mudah ini:

public class Calculator {
  private int result;

  public void add(int a, int b) {
    this.result = a + b;
  }

  public int getResult() {
    return result;
  }

  public void clear() {
    this.result = 0;
  }

  public static void main(String[] args) {
    Calculator calc = new Calculator();
    calc.add(10, 5);
    System.out.println("10 + 5 = " + calc.getResult());
  }
}

Anotasi @Given

Anotasi @Given digunakan untuk kaedah yang menetapkan konteks awal atau prasyarat bagi sesuatu senario. Anotasi ini menyediakan 'dunia' sebelum sesuatu tindakan berlaku.

Kita akan mencipta kelas StepDefinitions untuk menempatkan kaedah langkah kita. Perhatikan bahawa rentetan dalam @Given sepadan dengan langkah Gherkin.

import io.cucumber.java.en.Given;

public class StepDefinitions {
  private Calculator calculator;

  @Given("I have a calculator")
  public void iHaveACalculator() {
    calculator = new Calculator();
    System.out.println("Given: Calculator initialized.");
  }

  public static void main(String[] args) {
    StepDefinitions steps = new StepDefinitions();
    steps.iHaveACalculator();
  }
}

Anotasi @When

Anotasi @When menandakan kaedah yang menerangkan tindakan atau peristiwa. Biasanya, di sinilah sistem yang sedang diuji berinteraksi atau dicetuskan.

Kalkulator kita akan melaksanakan operasi 'add' di sini.

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;

public class StepDefinitions {
  private Calculator calculator;

  @Given("I have a calculator")
  public void iHaveACalculator() {
    calculator = new Calculator();
    System.out.println("Given: Calculator initialized.");
  }

  @When("I add two numbers")
  public void iAddTwoNumbers() {
    // For now, let's hardcode values. We'll make it dynamic soon!
    calculator.add(10, 20);
    System.out.println("When: Added two numbers (10, 20).");
  }

  public static void main(String[] args) {
    StepDefinitions steps = new StepDefinitions();
    steps.iHaveACalculator();
    steps.iAddTwoNumbers();
  }
}

Anotasi @Then

Anotasi @Then digunakan untuk kaedah yang memerhatikan hasil tindakan. Di sinilah anda menegaskan bahawa sistem berkelakuan seperti yang dijangka.

Kita akan menyemak sama ada hasil kalkulator adalah betul.

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;

public class StepDefinitions {
  private Calculator calculator;

  @Given("I have a calculator")
  public void iHaveACalculator() {
    calculator = new Calculator();
    System.out.println("Given: Calculator initialized.");
  }

  @When("I add two numbers")
  public void iAddTwoNumbers() {
    calculator.add(10, 20);
    System.out.println("When: Added two numbers (10, 20).");
  }

  @Then("the result should be 30")
  public void theResultShouldBe30() {
    if (calculator.getResult() == 30) {
      System.out.println("Then: Result is 30. Test PASSED!");
    } else {
      System.out.println("Then: Expected 30, got " + calculator.getResult() + ". Test FAILED!");
    }
  }

  public static void main(String[] args) {
    StepDefinitions steps = new StepDefinitions();
    steps.iHaveACalculator();
    steps.iAddTwoNumbers();
    steps.theResultShouldBe30();
  }
}

Menghantar Data dengan Argumen

Menetapkan nilai secara keras tidak fleksibel. Rangka kerja BDD membolehkan anda mendapatkan data daripada langkah Gherkin dan menghantarnya sebagai argumen kepada kaedah definisi langkah anda.

Kita menggunakan ungkapan biasa atau Ungkapan Cucumber (seperti {int}) untuk menentukan ruang letak.

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;

public class StepDefinitions {
  private Calculator calculator;

  @Given("I have a calculator")
  public void iHaveACalculator() {
    calculator = new Calculator();
    System.out.println("Given: Calculator initialized.");
  }

  @When("I add {int} and {int}")
  public void iAddTwoNumbers(int num1, int num2) {
    calculator.add(num1, num2);
    System.out.println("When: Added " + num1 + " and " + num2 + ".");
  }

  @Then("the result should be {int}")
  public void theResultShouldBe(int expectedResult) {
    if (calculator.getResult() == expectedResult) {
      System.out.println("Then: Result is " + expectedResult + ". Test PASSED!");
    } else {
      System.out.println("Then: Expected " + expectedResult + ", got " + calculator.getResult() + ". Test FAILED!");
    }
  }

  public static void main(String[] args) {
    StepDefinitions steps = new StepDefinitions();
    steps.iHaveACalculator();
    steps.iAddTwoNumbers(5, 7); // Simulating Gherkin "When I add 5 and 7"
    steps.theResultShouldBe(12); // Simulating Gherkin "Then the result should be 12"
  }
}

Padanan Langkah Fleksibel dengan Regex

Walaupun {int} dan {string} mudah digunakan, anda boleh menggunakan ungkapan biasa penuh untuk corak padanan yang lebih kompleks.

Contohnya, jika langkah Gherkin anda ialah Given I have an (empty|full) wallet, corak definisi langkah anda mungkin "^I have an (empty|full) wallet$" untuk mendapatkan 'empty' atau 'full'.

  • Gunakan \\d+ untuk satu atau lebih digit.
  • Gunakan "(.*)" untuk mendapatkan sebarang teks.

Hal ini membolehkan satu definisi langkah sepadan dengan beberapa frasa Gherkin yang sedikit berbeza.

Cangkuk BDD: Persediaan & Pembersihan

Kadangkala, anda perlu melakukan tindakan sebelum atau selepas setiap senario, atau bahkan sebelum atau selepas semua ciri. Rangka kerja BDD menyediakan Cangkuk untuk tujuan ini.

  • @Before: Berjalan sebelum setiap senario. Berguna untuk menetapkan semula keadaan.
  • @After: Berjalan selepas setiap senario. Berguna untuk pembersihan.
import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import io.cucumber.java.Before;
import io.cucumber.java.After;

public class StepDefinitions {
  private Calculator calculator;

  @Before
  public void setupScenario() {
    System.out.println("\n--- Scenario Setup (@Before) ---");
    calculator = new Calculator(); // Ensure a fresh calculator for each scenario
  }

  @After
  public void teardownScenario() {
    System.out.println("--- Scenario Teardown (@After) ---");
    // Optional: add cleanup if needed, e.g., closing resources
  }

  @Given("I have a calculator")
  public void iHaveACalculator() {
    System.out.println("Given: Calculator initialized.");
  }

  @When("I add {int} and {int}")
  public void iAddTwoNumbers(int num1, int num2) {
    calculator.add(num1, num2);
    System.out.println("When: Added " + num1 + " and " + num2 + ".");
  }

  @Then("the result should be {int}")
  public void theResultShouldBe(int expectedResult) {
    if (calculator.getResult() == expectedResult) {
      System.out.println("Then: Result is " + expectedResult + ". Test PASSED!");
    } else {
      System.out.println("Then: Expected " + expectedResult + ", got " + calculator.getResult() + ". Test FAILED!");
    }
  }

  public static void main(String[] args) {
    StepDefinitions steps = new StepDefinitions();
    // Simulate a scenario run
    steps.setupScenario();
    steps.iHaveACalculator();
    steps.iAddTwoNumbers(8, 4); // Simulating Gherkin "When I add 8 and 4"
    steps.theResultShouldBe(12); // Simulating Gherkin "Then the result should be 12"
    steps.teardownScenario();

    // Simulate another scenario run
    steps.setupScenario();
    steps.iHaveACalculator();
    steps.iAddTwoNumbers(10, 0); // Simulating Gherkin "When I add 10 and 0"
    steps.theResultShouldBe(10); // Simulating Gherkin "Then the result should be 10"
    steps.teardownScenario();
  }
}

Menjalankan Fail Ciri Anda

Dalam projek BDD sebenar, anda tidak akan memanggil kaedah definisi langkah secara manual seperti yang kita lakukan dalam main.

Sebaliknya, anda akan mempunyai Pelaksana Ujian (selalunya kelas ujian JUnit) yang memberitahu rangka kerja BDD (contohnya, Cucumber) lokasi untuk mencari fail ciri dan definisi langkah anda.

Pelaksana itu kemudiannya menghuraikan Gherkin, mencari definisi langkah yang sepadan dan melaksanakannya mengikut urutan sambil melaporkan hasilnya.

Semakan Pantas: Peranan Definisi Langkah

Padankan anotasi BDD dengan peranan utamanya dalam definisi langkah.

Imbas Kembali: Melaksanakan Definisi Langkah

Anda telah mempelajari cara menghubungkan langkah Gherkin yang boleh dibaca manusia kepada kod boleh laku!

  • Step Definitions ialah kaedah Java yang dianotasi dengan @Given, @When atau @Then.
  • Ia menggunakan ungkapan biasa atau Ungkapan Cucumber (seperti {int}) untuk memadankan teks Gherkin.
  • Argumen boleh diperoleh daripada langkah Gherkin dan dihantar kepada kaedah.
  • Cangkuk seperti @Before dan @After membantu mengurus persediaan dan pembersihan senario.

Jambatan antara bahasa dan kod ini merupakan asas BDD, serta memastikan ujian dapat difahami oleh semua pihak yang terlibat dalam projek!

Percuma untuk bermula

Pelajari Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Melaksanakan Takrifan Langkah” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi, termasuk “Melaksanakan Takrifan Langkah”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Melaksanakan Takrifan Langkah”?

Hubungkan fail ciri Gherkin dengan kod boleh laku dengan menulis takrifan langkah menggunakan rangka kerja BDD. Anda berlatih Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Melaksanakan Takrifan Langkah” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi ini?

Ya. Setiap pelajaran Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengenalan kepada BDD
  2. Sintaks dan Ciri Gherkin
  3. Melaksanakan Takrifan Langkah
  4. Garis Besar Senario dan Jadual Data
← Kembali ke Penguasaan Pengujian: JUnit, Mockito & Ujian Integrasi