Fixture dan Penyiapan
Bagikan penyiapan test
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, amanSetUpTestSuite/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, gunakanTEST_F SetUp/TearDowndijalankan untuk setiap pengujian; objek baru dibuat setiap kaliSetUpTestSuiteuntuk sumber daya bersama yang digunakan sekali per rangkaian- Pembantu dan lingkungan global membantu rangkaian pengujian yang lebih besar
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
- Menyiapkan GTest
- Assertion dan Matcher
- Fixture dan Penyiapan
- Mocking dengan GMock