gpt4 book ai didi

c++ - 我如何继承 gtest testing::Test?

转载 作者:太空狗 更新时间:2023-10-29 21:16:09 25 4
gpt4 key购买 nike

我有一些具有一些通用功能的测试类,我想创建类似的东西

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 wrong\n";
}


// A new test class of these is created for each test
class MyStuffTest : BaseTest
{
public:
};
/*
TEST_F(MyStuffTest, Tools)
{
cerr << "Something was wrong\n";
}
*/


int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

最佳答案

我不确定你打算在哪里调用构造函数std::string 参数放在首位,googletest fixture 的使用classes 并不意味着显式创建 fixture 类对象。问题是您正在尝试创建一个夹具类没有默认构造函数(它不是由编译器生成的因为你用 std::string 参数声明了一个)。这是一个问题,因为 googletest 为每个声明的测试创建了一个新类使用 TEST_F(MyFixtureClass, ...),这个新类继承自MyFixtureClass 并需要默认构造函数。

要获取测试的名称,请使用 testing::TestInfo 对象,该对象可以使用方法 testing::UnitTest::current_test_info 检索。有关更详细的用法示例,请查看文档:

https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#getting-the-current-tests-name

关于c++ - 我如何继承 gtest testing::Test?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com