我怎样才能子类测试::测试
How can I subclass gtest testing::Test?
我有一些具有常见功能的测试类,我想创建类似的东西
class BaseTest : public testing::Test
然后派生出更多的子类,如
class StuffTest : public BaseTest
但是,编译器会给出错误消息
error: use of deleted function 'StuffTest::StuffTest()'
TEST_F(StuffTest, SFile)
如何派生测试子类,为什么会出现这个奇怪的错误消息?
添加了一些测试代码:(我想在子类中添加一个测试名称。没有构造函数,它可以正常工作。使用构造函数,我遇到了奇怪的语法错误。
#include <gtest/gtest.h>
using namespace std;
// A new test class of these is created for each test
class BaseTest
: public testing::Test
{
public:
// BaseTest(string a);
BaseTest();
virtual void SetUp()
{ cerr << "Setting up " << MyName;}
virtual void TearDown()
{cerr << "Closing down " << MyName;}
protected:
string MyName;
};
//BaseTest::BaseTest(string TestName)
BaseTest::BaseTest()
: testing::Test
{
// MyName = TestName;
}
TEST_F(BaseTest, Tools)
{
cerr << "Something was wrongn";
}
// A new test class of these is created for each test
class MyStuffTest : BaseTest
{
public:
};
/*
TEST_F(MyStuffTest, Tools)
{
cerr << "Something was wrongn";
}
*/
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
我不确定您打算在哪里调用构造函数 首先std::string
争论,谷歌测试夹具的使用类并不意味着显式创建夹具类对象。问题是您正在尝试创建一个夹具类没有默认构造函数(它不是由编译器生成的因为你用std::string
参数声明了一个)。这是一个问题,因为 GoogleTest 为每个声明的测试创建一个新类在TEST_F(MyFixtureClass, ...)
,这个新类继承自 MyFixtureClass
并需要默认构造函数。
若要获取测试的名称,请使用可以使用方法 testing::UnitTest::current_test_info
检索testing::TestInfo
对象。有关更详细的使用示例,请查看文档。
相关文章:
- 继承期间显示未知行为的子类
- 通过指向指针数组的指针访问子类的属性
- 从父类方法返回子类对象
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 将父类对象强制转换为子类的问题
- 避免在C++中重复子类定义
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 如何初始化矢量的模板化子类
- C++ 继承:将子类传递给需要基类的函数并获取子类行为
- 有没有办法按值将纯抽象类的所有子类传递给 C++ 中的函数?
- 使用子类覆盖基类中定义的函数
- 子类地址等于虚拟基类地址?
- 将子类方法声明为基类的友元
- C++子类共享变量?
- 如何检查模板专用化是否是基本模板的子类?
- 仅让特定类'Fabric'构造类'Foo'及其所有子类的实例
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 如何使用谷歌测试将单一测试应用于所有子类
- 我怎样才能子类测试::测试
- 告诉 mstest 忽略基类中的测试方法,但不忽略子类中的测试方法