GoogleTest 使用指南 使用命名空间组织测试GoogleTest 使用指南 使用命名空间组织测试命名空间的优势命名空间的实现GoogleTest 使用指南 使用命名空间组织测试在大型项目中测试代码的组织尤为重要。合理使用命名空间可以避免命名冲突提升代码的可读性和维护性。命名空间的优势避免命名冲突不同模块的测试用例可以在各自的命名空间中定义避免同名测试用例的冲突。提升可读性通过命名空间明确测试用例所属的模块或功能便于理解测试结构。便于管理命名空间可以按功能或模块分组便于管理和维护测试代码。命名空间的实现calculator.h#pragmaonceclassCalculator{public:doubleadd(doublea,doubleb);doublesubtract(doublea,doubleb);doublemultiply(doublea,doubleb);doubledivide(doublea,doubleb);intfactorial(intn);};calculator.cpp#includecalculator.h#includestdexceptdoubleCalculator::add(doublea,doubleb){returnab;}doubleCalculator::subtract(doublea,doubleb){returna-b;}doubleCalculator::multiply(doublea,doubleb){returna*b;}doubleCalculator::divide(doublea,doubleb){if(b0){throwstd::invalid_argument(Division by zero);}returna/b;}intCalculator::factorial(intn){if(n0||n1)return1;returnfactorial(n-1)*n;}test_calculator_namespace.cpp#includegtest/gtest.h#includecalculator.h#includestdexceptnamespacecalculator_namespace_test{classCalculatorNamespaceTest:public::testing::Test{protected:Calculator calculator;};TEST_F(CalculatorNamespaceTest,Add){EXPECT_DOUBLE_EQ(calculator.add(2.0,3.0),5.0);EXPECT_DOUBLE_EQ(calculator.add(-2.0,3.0),1.0);}TEST_F(CalculatorNamespaceTest,Subtract){EXPECT_DOUBLE_EQ(calculator.subtract(5.0,3.0),2.0);EXPECT_DOUBLE_EQ(calculator.subtract(-2.0,-3.0),1.0);}TEST_F(CalculatorNamespaceTest,Multiply){EXPECT_DOUBLE_EQ(calculator.multiply(4.0,3.0),12.0);EXPECT_DOUBLE_EQ(calculator.multiply(-2.0,3.0),-6.0);}TEST_F(CalculatorNamespaceTest,Divide){EXPECT_DOUBLE_EQ(calculator.divide(10.0,2.0),5.0);EXPECT_THROW(calculator.divide(10.0,0.0),std::invalid_argument);}TEST_F(CalculatorNamespaceTest,Factorial){EXPECT_EQ(calculator.factorial(0),1);EXPECT_EQ(calculator.factorial(1),1);EXPECT_EQ(calculator.factorial(5),120);}}// namespace calculator_namespace_test编译、执行测试cmake--buildbuild--targettest_calculator_namespace ctest --test-dir build-Rtest_calculator_namespace --output-on-failure测试结果