C++ Academy · Pelajaran

Fixture dan Penyiapan

Bagikan penyiapan test

Pelajaran 3 dari 413 langkah

Fixture dan Penyiapan adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Berbagi Penyiapan Antar-Pengujian

Ketika beberapa pengujian memerlukan objek yang sama, perlengkapan pengujian memungkinkan Anda mendefinisikan penyiapan tersebut sekali. Perlengkapan pengujian adalah kelas yang diturunkan dari ::testing::Test.

Mendefinisikan Perlengkapan Pengujian

Anggota perlengkapan pengujian dapat diakses dalam setiap pengujian yang menggunakannya. SetUp() dijalankan sebelum setiap pengujian; TearDown() dijalankan setelahnya.

#include <gtest/gtest.h>
#include <vector>

class VectorTest : public ::testing::Test {
protected:
    std::vector<int> v;
    void SetUp() override { v = {1, 2, 3}; }
};

Menggunakan TEST_F

Pengujian yang menggunakan perlengkapan pengujian ditulis dengan TEST_F, dengan meneruskan nama kelas perlengkapan pengujian sebagai argumen pertama.

#include <gtest/gtest.h>
#include <vector>

class VectorTest : public ::testing::Test {
protected:
    std::vector<int> v{1, 2, 3};
};

TEST_F(VectorTest, HasThree) {
    EXPECT_EQ(v.size(), 3u);
}

TEST_F(VectorTest, FirstIsOne) {
    EXPECT_EQ(v.front(), 1);
}

Instans Baru untuk Setiap Pengujian

GTest membuat objek perlengkapan pengujian baru untuk setiap pengujian. Pengujian tidak pernah berbagi keadaan yang dapat diubah, sehingga tetap independen dan urutannya tidak berpengaruh.

SetUp vs Konstruktor

Anda dapat menginisialisasi anggota dalam konstruktor atau dalam SetUp(). Gunakan SetUp() ketika inisialisasi dapat melempar pengecualian atau ketika Anda ingin memanggil metode virtual dengan aman.

#include <gtest/gtest.h>

class Resource : public ::testing::Test {
protected:
    int* data = nullptr;
    void SetUp() override { data = new int(10); }
    void TearDown() override { delete data; }
};

TEST_F(Resource, HasTen) {
    EXPECT_EQ(*data, 10);
}

TearDown untuk Pembersihan

TearDown() melepaskan sumber daya yang diperoleh dalam SetUp(). Dengan anggota RAII, destruktor sering kali menanganinya secara otomatis sehingga Anda mungkin sama sekali tidak memerlukan TearDown().

Penyiapan Tingkat Rangkaian

Untuk sumber daya bersama yang mahal, gunakan SetUpTestSuite() dan TearDownTestSuite() statis. Keduanya dijalankan sekali untuk setiap rangkaian, bukan untuk setiap pengujian.

#include <gtest/gtest.h>

class DbTest : public ::testing::Test {
protected:
    static void SetUpTestSuite() { /* open shared connection */ }
    static void TearDownTestSuite() { /* close it */ }
};

Per Pengujian vs Per Rangkaian

Pilih dengan cermat.

  • SetUp/TearDown: per pengujian, terisolasi, aman
  • SetUpTestSuite/TearDownTestSuite: per rangkaian, digunakan bersama, lebih cepat tetapi pengujian dapat saling mengganggu

Metode Pembantu

Perlengkapan pengujian dapat memuat metode pembantu yang digunakan oleh beberapa pengujian, sehingga setiap pengujian tetap berfokus pada pernyataannya.

#include <gtest/gtest.h>
#include <string>

class ParserTest : public ::testing::Test {
protected:
    int parse(const std::string& s) { return std::stoi(s); }
};

TEST_F(ParserTest, ParsesNumber) {
    EXPECT_EQ(parse("42"), 42);
}

Lingkungan Global

Untuk penyiapan di seluruh proses, yang dijalankan sekali sebelum pengujian apa pun, daftarkan ::testing::Environment melalui AddGlobalTestEnvironment. Ini berguna untuk pencatatan log atau inisialisasi kerangka kerja.

Menjaga Kemandirian Pengujian

Karena setiap TEST_F memperoleh perlengkapan pengujian baru, jangan pernah bergantung pada efek samping dari pengujian lain. Kemandirian membuat kegagalan mudah didiagnosis dan pengujian aman dijalankan secara paralel.

Pemeriksaan Singkat

Ingat kembali siklus hidup perlengkapan pengujian.

Rangkuman

Anda telah mempelajari perlengkapan pengujian.

  • Turunkan dari ::testing::Test, gunakan TEST_F
  • SetUp/TearDown dijalankan untuk setiap pengujian; objek baru dibuat setiap kali
  • SetUpTestSuite untuk sumber daya bersama yang digunakan sekali per rangkaian
  • Pembantu dan lingkungan global membantu rangkaian pengujian yang lebih besar
Gratis untuk memulai

Belajar C++ dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fixture dan Penyiapan” gratis?

Ya — teks lengkap “Fixture dan Penyiapan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fixture dan Penyiapan”?

Bagikan penyiapan test Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Fixture dan Penyiapan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menyiapkan GTest
  2. Assertion dan Matcher
  3. Fixture dan Penyiapan
  4. Mocking dengan GMock
← Kembali ke C++ Academy