Fixture dan Persediaan
Kongsi persediaan ujian
Fixture dan Persediaan ialah pelajaran C++ Academy 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 C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.
Berkongsi Persediaan Merentas Ujian
Apabila beberapa ujian memerlukan objek yang sama, lekapan membolehkan anda mentakrifkan persediaan itu sekali sahaja. Lekapan ialah class yang mewarisi daripada ::testing::Test.
Mentakrifkan Lekapan
Ahli lekapan boleh diakses dalam setiap ujian yang menggunakannya. SetUp() dijalankan sebelum setiap ujian; TearDown() dijalankan selepasnya.
#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
Ujian yang menggunakan lekapan ditulis dengan TEST_F, dengan menghantar nama class lekapan 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 Baharu bagi Setiap Ujian
GTest mencipta objek lekapan baharu bagi setiap ujian. Ujian tidak pernah berkongsi keadaan boleh ubah, jadi ujian kekal bebas dan susunan pelaksanaannya tidak penting.
SetUp berbanding Constructor
Anda boleh memulakan ahli dalam constructor atau dalam SetUp(). Gunakan SetUp() apabila pemulaan boleh melontarkan pengecualian atau apabila anda mahu memanggil kaedah maya dengan selamat.
#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 yang diperoleh dalam SetUp(). Dengan ahli RAII, pemusnah selalunya mengendalikan perkara ini secara automatik dan anda mungkin langsung tidak memerlukan TearDown().
Persediaan Peringkat Suite
Untuk sumber dikongsi yang mahal, gunakan SetUpTestSuite() dan TearDownTestSuite() statik. Kedua-duanya dijalankan sekali bagi setiap suite, bukan bagi setiap ujian.
#include <gtest/gtest.h>
class DbTest : public ::testing::Test {
protected:
static void SetUpTestSuite() { /* open shared connection */ }
static void TearDownTestSuite() { /* close it */ }
};Setiap Ujian berbanding Setiap Suite
Pilih dengan teliti.
SetUp/TearDown: bagi setiap ujian, terpencil dan selamatSetUpTestSuite/TearDownTestSuite: bagi setiap suite, dikongsi dan lebih pantas, tetapi ujian boleh saling mengganggu
Kaedah Pembantu
Lekapan boleh mengandungi kaedah pembantu yang digunakan oleh beberapa ujian, supaya setiap ujian kekal tertumpu pada penegasannya.
#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);
}Persekitaran Global
Untuk persediaan seluruh proses (dijalankan sekali sebelum mana-mana ujian), daftarkan ::testing::Environment melalui AddGlobalTestEnvironment. Ini berguna untuk pengelogan atau pemulaan rangka kerja.
Mengekalkan Kebebasan Ujian
Oleh sebab setiap TEST_F mendapat lekapan baharu, jangan sekali-kali bergantung pada kesan sampingan daripada ujian lain. Kebebasan menjadikan kegagalan mudah didiagnosis dan ujian selamat untuk dijalankan secara selari.
Semakan Pantas
Ingat kembali kitar hayat lekapan.
Rumusan
Anda telah mempelajari tentang lekapan.
- Warisi daripada
::testing::Test, gunakanTEST_F SetUp/TearDowndijalankan bagi setiap ujian; objek baharu dicipta setiap kaliSetUpTestSuiteuntuk sumber yang dikongsi dan dijalankan sekali bagi setiap suite- Pembantu dan persekitaran global membantu suite yang lebih besar
Pelajari C++ 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
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Fixture dan Persediaan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Fixture dan Persediaan”, 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 C++ Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Fixture dan Persediaan”?
Kongsi persediaan ujian Anda berlatih C++ Academy 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 C++ Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy 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 “Fixture dan Persediaan” 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 C++ Academy ini?
Ya. Setiap pelajaran C++ Academy 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
- Menyediakan GTest
- Pernyataan dan Pemadan
- Fixture dan Persediaan
- Mock dengan GMock