【发布时间】:2017-07-21 14:27:18
【问题描述】:
我正在使用 gtest 为我的 c++ 程序创建单元测试。在我的测试中,我必须写很多这样的检查:
ASSERT_TRUE(myObject.IsValid());
EXPECT_EQ(myObject.GetSomeAttribute(), expectedValue);
我必须编写这两项检查,因为如果我省略 ASSERT_TRUE 和 myObject 碰巧无效,那么 myObject.GetSomeAttributre() 调用就会崩溃。即使在测试中也不好。
我想要的是写这样的东西:
EXPECT_XXX_EQ(myObject.GetSomeAttribute(), expectedValue);
这行代码应该和原来的两行大致相同(如果myObject 无效,则会报告此代码,GetSomeAttribute() 不会被调用,但测试将继续运行) .
如何编写这样的自定义断言/期望?
【问题讨论】:
-
为什么不修复代码以检查对象在调用 getattribute 时是否有效?
-
@stark 两个原因:1. 我无法修改 GetSomeAttribute() 2. 即使我可以,如果调用无效对象,这种方法最好的方法就是死。
-
@Eddge 不是重复的; googletest 断言与标准 c++ 断言非常不同
-
你没看the documentation吗?
标签: c++ unit-testing googletest