5、运行用例,结果如下图

  温馨提醒
  如果使用--gtest_filter进行过滤,则不能写为这样的形式:
  --gtest_filter=QueueTest.DefaultCons
  --gtest_filter=QueueTest.*
  原因:因为后面带了 /n,n表示数字,需写为如下形式:
  --gtest_filter=QueueTest*
  在前面的例子中,被测试模板类只有一个类型参数,如果是多个类型参数呢,那该如何测试?
  两个类型参数的模板类
  // 如果有两个类型参数
  template <class E, class F>
  class Que
  {
  public:
  Que() {}
  void Enque(const E& el) {}
  E* Deque() {}
  F size() const
  {
  return (F)123;
  }
  };
  大家可以静静的想几分钟,看能不能解决这个问题吧~~
  三、如何测试多参数模板类
  下面开始讨论这个主题:如何对多参数模板类进行测试?
  不能照搬前面方案
  当被测试模板类有两个甚至多个类型参数时,再按前面例子的办法来进行行不通了,因为gtest模板类测试宏仅接收一个模板参数,那该如何处理这个问题呢?
  我的解决方案
  将多个参数放在一个结构体里,做成一个模板类,将该模板类作为一个类型。
  将多个参数组合成结构体
  template <class A, class B>
  struct Params
  {
  typedef typename A TypeA;
  typedef typename B TypeB;
  }
  测试框架随之也要改变
template <class T>
class TestX : public testing::Test
{
protected:
TestX() : m_i(CreateIndex<typename T::TypeA, typename T::TypeB())
{}
virtual ~TestX()
{
delete m_i;
}
void Setup() {}
void TearDown() {}
// Index为被测试模板类
Index<typename T::TypeA, typename T::TypeB>* const m_i;
};
  改变需要测试的类型列表的写法
  typedef testing::Types<Params<int, int>, Params<char, char> > Impls;
  测试用例书写方式也需要更改
  TYPED_TEST_CASE(TestX, Impls);
  TYPED_TEST(TestX, DefaultCons)
  {
  // 如果需要使用类型,需要写如下代码
  typename TypeParam::TypeA sA;
  typename TypeParam::TypeB sB;
  ASSERT_EQ(0, this->m_i->length());
  }