C++ Academy · Pelajaran

Fixture dan Persediaan

Kongsi persediaan ujian

Pelajaran 3 daripada 413 langkah

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 selamat
  • SetUpTestSuite/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, gunakan TEST_F
  • SetUp/TearDown dijalankan bagi setiap ujian; objek baharu dicipta setiap kali
  • SetUpTestSuite untuk sumber yang dikongsi dan dijalankan sekali bagi setiap suite
  • Pembantu dan persekitaran global membantu suite yang lebih besar
Percuma untuk bermula

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

  1. Menyediakan GTest
  2. Pernyataan dan Pemadan
  3. Fixture dan Persediaan
  4. Mock dengan GMock
← Kembali ke C++ Academy