【发布时间】:2020-11-15 17:11:33
【问题描述】:
我正在从事一个 C++ 学习项目,其双重目标是学习如何编写模板代码以及学习如何使用 GoogleTest。我的项目目标是实现一个工作四元数类以及使用 GoogleTest 编写的功能测试。
到目前为止,我的课程运行良好,但我想将一些 GoogleTest 测试用例标记为“预期失败”。 这是四元数相关构造函数的签名 -
template <typename T>
class quaternion {
template <typename U, typename V, typename W, typename X>
quaternion(U u, V v, W w, X x);
};
我正在使用 GoogleTest 编写一些 TYPED_TEST 测试用例,我尝试使用诸如 unsigned char、char 等初始化器创建给定类型 T 的四元数...
这是我的类型列表
using MyTypes = ::testing::Types<char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double>;
这是测试夹具 -
TYPED_TEST(QuaternionTests, DirectInitialization00) {
unsigned int i = 5, j = 235, k = 67, l = 82;
this->SetUp(i, j, k, l);
EXPECT_EQ(this->q.a, 5);
EXPECT_EQ(this->q.b, 235);
EXPECT_EQ(this->q.c, 67);
EXPECT_EQ(this->q.d, 82);
}
SetUp 只调用 quaternion 构造函数。
当然,当四元数的类型为 char 时,此测试会失败,因为 quaternion 不能为值 235 (unsigned int)成员b。
我的问题是 - 有没有办法将 T == char 和 unsigned int 的特定组合在TYPED_TEST 宏?还是我必须切换到常规的 TEST 宏?
【问题讨论】:
标签: c++ googletest