打开vs2022选择C++
的测试
选择第一个本机单元测试项目
ps:怎么添加一个项目到单元测试 在单元测试的时候需要添加现有项选择obj
文件就能链接成功
代码覆盖就是测试代码的每一条语句都要执行到,确保不发生错误
下面是编写的测试代码
以下是测试代码
double MathLibrary::Divide(double a, double b) {
if (b != 0) return a / b;
return 0.0;
}
bool MathLibrary::IsPositive(int n) {
return n >= 0;
}
bool MathLibrary::CheckRange(int a, int b) {
return (a > 0) && (b < 10);
}
double MathLibrary::CalculateDiscount(int age, bool isMember) {
if (age < 18)
return isMember ? 0.25 : 0.20;
else
return isMember ? 0.15 : 0.10;
}
#include "pch.h"
#include "CppUnitTest.h"
#include "MathLibrary.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTestDemo
{
TEST_CLASS(UnitTestDemo)
{
public:
// 语句覆盖
TEST_METHOD(Divide_ZeroDivisor1) { Assert::AreEqual(0.0, MathLibrary::Divide(4, 0)); }
TEST_METHOD(Divide_ZeroDivisor2) { Assert::AreEqual(0.0, MathLibrary::Divide(4, 0)); }
// 分支覆盖
TEST_METHOD(IsPositive_Positive1) { Assert::IsTrue(MathLibrary::IsPositive(5)); }
TEST_METHOD(IsPositive_Negative2) { Assert::IsFalse(MathLibrary::IsPositive(-5)); }
// 条件覆盖
TEST_METHOD(CheckRange_BothTrue1) { Assert::IsTrue(MathLibrary::CheckRange(5, 5)); }
TEST_METHOD(CheckRange_FirstFalse2) { Assert::IsFalse(MathLibrary::CheckRange(-5, 5)); }
TEST_METHOD(CheckRange_SecondFalse3) { Assert::IsFalse(MathLibrary::CheckRange(5, 15)); }
// 路径覆盖
TEST_METHOD(Discount_TeenMember1) { Assert::AreEqual(0.25, MathLibrary::CalculateDiscount(15, true)); }
TEST_METHOD(Discount_TeenNonMember2) { Assert::AreEqual(0.20, MathLibrary::CalculateDiscount(15, false)); }
TEST_METHOD(Discount_AdultMember3) { Assert::AreEqual(0.15, MathLibrary::CalculateDiscount(20, true)); }
TEST_METHOD(Discount_AdultNonMember4) { Assert::AreEqual(0.10, MathLibrary::CalculateDiscount(20, false)); }
};
}
在需要调试的位置打上断点,右键点击调试测试