Rumah pembangunan bahagian belakang C++ Bagaimana untuk mengukur liputan ujian unit fungsi C++?

Bagaimana untuk mengukur liputan ujian unit fungsi C++?

Apr 24, 2024 am 09:36 AM
linux Ujian unit c++

Kaedah untuk mengukur liputan ujian unit fungsi dalam C++ termasuk: menggunakan bendera pengkompil, seperti bendera -fprofile-arcs dan -ftest-coverage GCC menggunakan rangka kerja ujian, seperti bendera Google Test --gtest_output=xml menggunakan Alat luaran seperti CovWrap.

如何测量 C++ 函数单元测试的覆盖率?

Bagaimana untuk mengukur liputan ujian unit fungsi C++?

Liputan kod ialah penunjuk penting kualiti ujian unit. Ia menunjukkan jumlah kod fungsi yang dilindungi oleh suite ujian apabila dilaksanakan. Dalam C++, terdapat beberapa cara untuk mengukur liputan.

Menggunakan bendera pengkompil

Banyak penyusun menyediakan bendera untuk mengukur liputan. Contohnya, menggunakan pengkompil GCC:

g++ -fprofile-arcs -ftest-coverage your_code.cpp
Salin selepas log masuk

Selepas melaksanakan atur cara, ia akan menjana fail bernama gcov.out dalam direktori semasa, yang mengandungi maklumat liputan. gcov.out 的文件,其中包含覆盖率信息。

使用测试框架

Google Test(gtest)等测试框架提供了内置的覆盖率测量工具。在gtest中,使用 --gtest_output=xml 标志运行测试:

gtest your_test_case --gtest_output=xml
Salin selepas log masuk

这将生成一个 XML 文件,其中包含覆盖率数据。

使用外部工具

CovWrap 是一个外部工具,可以生成 gcov 输出。它适用于 Windows 和 Linux 系统。

实战案例

考虑一个简单的 C++ 函数:

int sum(int a, int b) {
  return a + b;
}
Salin selepas log masuk

创建一个单元测试来测试此函数:

#include "gtest/gtest.h"

TEST(SumTest, PositiveValues) {
  EXPECT_EQ(sum(1, 2), 3);
}
Salin selepas log masuk

使用gtest运行测试并生成覆盖率报告:

gtest SumTest --gtest_output=xml
Salin selepas log masuk

生成的 XML 报告将显示该测试覆盖了 sum

Gunakan Rangka Kerja Pengujian

🎜🎜Rangka kerja ujian seperti Google Test (gtest) menyediakan alat pengukuran liputan terbina dalam. Dalam gtest, jalankan ujian menggunakan bendera --gtest_output=xml: 🎜
  return a + b;
Salin selepas log masuk
🎜Ini akan menjana fail XML yang mengandungi data liputan. 🎜🎜🎜Menggunakan alat luaran 🎜🎜🎜CovWrap ialah alat luaran yang boleh menjana output gcov. Ia tersedia untuk sistem Windows dan Linux. 🎜🎜🎜Kes Praktikal🎜🎜🎜Pertimbangkan fungsi C++ yang mudah: 🎜rrreee🎜Buat ujian unit untuk menguji fungsi ini: 🎜rrreee🎜Gunakan gtest untuk menjalankan ujian dan hasilkan laporan liputan: 🎜Laporan XML yang akan dijanakan ini Ujian meliputi baris kod berikut bagi fungsi sum: 🎜rrreee🎜 Ini menunjukkan bahawa kes ujian boleh merangkumi logik fungsi. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengukur liputan ujian unit fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perlumbaan Prestasi: Golang vs C Perlumbaan Prestasi: Golang vs C Apr 16, 2025 am 12:07 AM

Golang dan C masing-masing mempunyai kelebihan sendiri dalam pertandingan prestasi: 1) Golang sesuai untuk kesesuaian tinggi dan perkembangan pesat, dan 2) C menyediakan prestasi yang lebih tinggi dan kawalan halus. Pemilihan harus berdasarkan keperluan projek dan tumpukan teknologi pasukan.

C# vs C: Sejarah, evolusi, dan prospek masa depan C# vs C: Sejarah, evolusi, dan prospek masa depan Apr 19, 2025 am 12:07 AM

Sejarah dan evolusi C# dan C adalah unik, dan prospek masa depan juga berbeza. 1.C dicipta oleh BjarnestroustRup pada tahun 1983 untuk memperkenalkan pengaturcaraan berorientasikan objek ke dalam bahasa C. Proses evolusinya termasuk pelbagai standardisasi, seperti C 11 memperkenalkan kata kunci auto dan ekspresi Lambda, C 20 memperkenalkan konsep dan coroutin, dan akan memberi tumpuan kepada pengaturcaraan prestasi dan sistem pada masa akan datang. 2.C# telah dikeluarkan oleh Microsoft pada tahun 2000. Menggabungkan kelebihan C dan Java, evolusinya memberi tumpuan kepada kesederhanaan dan produktiviti. Sebagai contoh, C#2.0 memperkenalkan generik dan C#5.0 memperkenalkan pengaturcaraan tak segerak, yang akan memberi tumpuan kepada produktiviti pemaju dan pengkomputeran awan pada masa akan datang.

Cara menggunakan vscode Cara menggunakan vscode Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) adalah editor cross-platform, sumber terbuka dan editor kod percuma yang dibangunkan oleh Microsoft. Ia terkenal dengan ringan, skalabilitas dan sokongan untuk pelbagai bahasa pengaturcaraan. Untuk memasang VSCode, sila lawati laman web rasmi untuk memuat turun dan jalankan pemasang. Apabila menggunakan VSCode, anda boleh membuat projek baru, edit kod, kod debug, menavigasi projek, mengembangkan VSCode, dan menguruskan tetapan. VSCode tersedia untuk Windows, MacOS, dan Linux, menyokong pelbagai bahasa pengaturcaraan dan menyediakan pelbagai sambungan melalui pasaran. Kelebihannya termasuk ringan, berskala, sokongan bahasa yang luas, ciri dan versi yang kaya

Apr 16, 2025 pm 07:39 PM

Walaupun Notepad tidak dapat menjalankan kod Java secara langsung, ia dapat dicapai dengan menggunakan alat lain: menggunakan pengkompil baris arahan (Javac) untuk menghasilkan fail bytecode (fileName.class). Gunakan Java Interpreter (Java) untuk mentafsir bytecode, laksanakan kod, dan output hasilnya.

Apakah tujuan utama Linux? Apakah tujuan utama Linux? Apr 16, 2025 am 12:19 AM

Penggunaan utama Linux termasuk: 1. Sistem Operasi Pelayan, 2. Sistem Terbenam, 3. Linux cemerlang dalam bidang ini, menyediakan kestabilan, keselamatan dan alat pembangunan yang cekap.

Golang dan C: Perdagangan dalam prestasi Golang dan C: Perdagangan dalam prestasi Apr 17, 2025 am 12:18 AM

Perbezaan prestasi antara Golang dan C terutamanya ditunjukkan dalam pengurusan ingatan, pengoptimuman kompilasi dan kecekapan runtime. 1) Mekanisme pengumpulan sampah Golang adalah mudah tetapi boleh menjejaskan prestasi, 2) Pengurusan memori manual C dan pengoptimuman pengkompil lebih cekap dalam pengkomputeran rekursif.

Cara memeriksa alamat gudang git Cara memeriksa alamat gudang git Apr 17, 2025 pm 01:54 PM

Untuk melihat alamat repositori Git, lakukan langkah -langkah berikut: 1. Buka baris arahan dan navigasi ke direktori repositori; 2. Jalankan perintah "Git Remote -V"; 3. Lihat nama repositori dalam output dan alamat yang sepadan.

VSCODE Kunci Pintasan Seterusnya Sebelumnya VSCODE Kunci Pintasan Seterusnya Sebelumnya Apr 15, 2025 pm 10:51 PM

VS kod satu langkah/langkah seterusnya langkah pintas: satu langkah (mundur): Windows/Linux: Ctrl ←; MacOS: CMD ← Langkah seterusnya (ke hadapan): Windows/Linux: Ctrl →; MACOS: CMD →

See all articles