【发布时间】:2011-10-02 17:48:21
【问题描述】:
我有两个处理数组并返回单个值的算法实现,一个缓慢而幼稚但正确的方法A 和一个优化的方法B,它可能在输入参数空间的角落有问题。方法B 有分支,具体取决于输入数组的大小,我想针对不同的输入数组大小测试B 和A。两种方法都被模板化以适用于不同的类型。
我刚刚开始第一次使用 googletest,但我并没有真正看到如何使用夹具执行此操作的明确方法(以下是简化的,还有更多设置来获取测试去,我还想对数据进行其他测试):
template<typename T, unsigned int length> // type to test on, test array size
class BTest : public ::testing:Test {
public:
T* data; // test data
public:
BTest(); // allocate data, populate data with random elements
~BTest();
T run_method_a_on_data(); // reference: method A implementation
};
// ...
TYPED_TEST_CASE(...) // set up types, see text below
TYPED_TEST(...) {
// test that runs method B on data and compares to run_method_a_on_data()
}
在 googletest 文档中,在夹具定义之后运行实际测试的步骤是定义类型
typedef ::testing::Types<char, int, unsigned int> MyTypes;
TYPED_TEST_CASE(BTest, MyTypes);
但这显示了局限性,从::testing::Test 派生的类只允许使用单个模板参数。我读对了吗?怎么办?
【问题讨论】:
标签: c++ unit-testing googletest