【发布时间】:2023-03-28 23:40:01
【问题描述】:
我在使用 Visual Studio 2015 中的 Google Test 编译带有测试夹具的文件时遇到问题。我尝试为其创建测试夹具的类名为 Counter。
被测计数器类有一个受保护的默认构造函数,用于初始化各种受保护的成员变量。 Counter 类中的这些成员变量包括对象、指向 const 对象的指针、int 和 double。
DefaultConstructor 测试无法编译并出现以下错误消息the default constructor of "CounterTest" cannot be referenced -- it is a deleted function。
为了清楚起见,我试图在 CounterTest 类(测试夹具)中实例化一个 Counter 对象(使用它的默认构造函数),以便在各个测试中使用。
// Counter.h
class Counter : public ConfigurationItem {
protected:
EventId startEventIdIn_;
int numStarts_;
CounterConfigurationItem_Step const* currentStep_;
double startEncoderPosMm_;
private:
FRIEND_TEST(CounterTest, DefaultConstructor);
};
// GTest_Counter.cpp
class CounterTest : public ::testing::Test {
protected:
Counter counter;
};
TEST_F(CounterTest, DefaultConstructor)
{
ASSERT_EQ(0, counter.numStarts_);
}
我做错了什么?甚至可以让测试夹具与正在测试受保护/私有成员访问的类成为朋友吗?谢谢!
【问题讨论】:
标签: c++ unit-testing visual-studio-2015 googletest default-constructor