4
我有两个算法在数组上工作,并返回一个值,一个缓慢而天真但正确的方法A
和一个优化的方法B
,可能是在输入参数空间的角落错误。方法B
有分支取决于输入数组的大小,我想测试B
针对A
对于不同的输入数组大小。这两种方法都模板化以适应不同类型。googletest:用参数构造灯具?
我刚开始第一次使用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
派生的类。我正在读这个吗?怎么会这样呢?
谢谢,那正是我一直在寻找的。 – bbtrb
请注意,对于C++ 11,'element'是'std :: tuple_element','ElementType' typedef看起来像'typedef typename std :: tuple_element <0, T> :: type ElementType'。 – BKewl