Pengecualian fungsi C++ dan ujian tunggal: memastikan kekukuhan kod

WBOY
Lepaskan: 2024-05-03 09:18:01
asal
927 orang telah melayarinya

Pengendalian pengecualian dan ujian unit adalah amalan penting untuk memastikan keteguhan kod C++. Pengecualian dikendalikan melalui blok cuba-tangkap dan kod melompat ke blok tangkapan apabila pengecualian dilemparkan. Ujian unit mengasingkan ujian kod untuk mengesahkan bahawa pengendalian pengecualian berfungsi seperti yang diharapkan dalam keadaan yang berbeza. Kes praktikal: Fungsi sumArray mengira jumlah elemen tatasusunan dan membuang pengecualian untuk mengendalikan tatasusunan input kosong. Ujian unit mengesahkan kelakuan yang dijangkakan fungsi dalam keadaan tidak normal, seperti membuang pengecualian std::invalid_argument apabila tatasusunan kosong. Kesimpulan: Dengan memanfaatkan pengendalian pengecualian dan ujian unit, kami boleh mengendalikan pengecualian, menghalang kod daripada ranap dan memastikan bahawa kod berkelakuan seperti yang diharapkan dalam keadaan tidak normal. . Ujian tunggal ialah amalan penting untuk mengesahkan ketepatan kod. Artikel ini meneroka cara menggunakan pengecualian dan ujian unit untuk memastikan kewarasan kod C++ anda.

C++ 函数异常与单测:确保代码健全性Pengendalian pengecualian

Pengecualian dalam C++ dikendalikan melalui blok try-catch.

try {
  // 可能会引发异常的代码
} catch (const std::exception& e) {
  // 异常处理代码
}
Salin selepas log masuk

Dalam blok try, jika mana-mana kod memberikan pengecualian, atur cara akan melompat ke blok catch yang sepadan.

Ujian Unit

Ujian unit ialah ujian kod terpencil yang mengesahkan bahawa ciri tertentu berfungsi seperti yang diharapkan. Untuk pengendalian pengecualian, ujian tunggal boleh digunakan untuk memastikan fungsi berfungsi mengikut cara yang diingini dalam keadaan tidak normal.

TEST(ExceptionTest, TestThrow) {
  MyClass obj;
  EXPECT_THROW(obj.doSomethingThatThrows(), std::exception);
}
Salin selepas log masuk
Ujian ini menegaskan bahawa fungsi MyClass::doSomethingThatThrows() membuang std::exception.

Kes praktikaltry-catch 块处理。

int sumArray(const int* array, size_t size) {
  if (size == 0) {
    throw std::invalid_argument("数组为空");
  }

  // 计算数组元素的总和
  int sum = 0;
  for (size_t i = 0; i < size; ++i) {
    sum += array[i];
  }

  return sum;
}
Salin selepas log masuk

try 块中,如果任何代码引发异常,程序将跳转到相应的 catch 块。

单元测试

单测是隔离的代码测试,用于验证特定功能是否按预期工作。对于异常处理,单测可用于确保函数在异常情况下以所需方式运行。

TEST(SumArrayTest, TestEmptyArray) {
  int array[] = {};
  EXPECT_THROW(sumArray(array, 0), std::invalid_argument);
}
Salin selepas log masuk

此测试断言 MyClass::doSomethingThatThrows() 函数将引发 std::exception

实战案例

需求:计算数组中元素的总和,如果输入数组为空,抛出异常。

rrreee

单元测试:

rrreee

此测试验证当输入数组为空时,sumArray 函数会抛出 std::invalid_argument

Keperluan: Kira jumlah elemen dalam tatasusunan, dan buang pengecualian jika tatasusunan input kosong.

rrreee

Ujian unit: 🎜🎜rrreee🎜Ujian ini mengesahkan bahawa fungsi sumArray membuang pengecualian std::invalid_argument apabila tatasusunan input kosong. 🎜🎜🎜Kesimpulan🎜🎜🎜Dengan memanfaatkan rangka kerja pengendalian pengecualian dan ujian unit C++, kami boleh memastikan kewarasan kod kami, mengendalikan pengecualian dan mencegah ranap aplikasi. Pengendalian pengecualian membolehkan kami melaporkan ralat dan memulihkan kepada keadaan baik yang diketahui, manakala ujian unit boleh mengesahkan bahawa kod tersebut berfungsi dengan betul dalam keadaan ini. 🎜

Atas ialah kandungan terperinci Pengecualian fungsi C++ dan ujian tunggal: memastikan kekukuhan kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!