C++ 编写类的单元测试
我有一个构造函数有6个参数的类。我想为这个类编写一个测试夹具。我尝试在测试构造函数中调用这些参数,但未能创建测试夹具C++ 编写类的单元测试,c++,unit-testing,googletest,C++,Unit Testing,Googletest,我有一个构造函数有6个参数的类。我想为这个类编写一个测试夹具。我尝试在测试构造函数中调用这些参数,但未能创建测试夹具 class TestHandler { public: using Buffer = common::dt::ByteBuffer; using HardwareInterface = common::interfaces::SyncBufferProducerConsumer<B
class TestHandler
{
public:
using Buffer = common::dt::ByteBuffer;
using HardwareInterface =
common::interfaces::SyncBufferProducerConsumer<Buffer>;
explicit TestHandler(slave::cache::FullKeyValueCache&
cache, const CommandHandler& commandHandler,
const RTDCache& rtdCache, HardwareInterface&
hardwareInterface, bool& statusChanged, bool& alarmsChanged)
: m_keyValueCache(cache)
, m_commandHandler(commandHandler)
, m_rtdCache(rtdCache)
, m_hardwareInterface(hardwareInterface)
, m_statusChanged(statusChanged)
, m_alarmsChanged(alarmsChanged)
{
}
template <typename T>
void respond()
{
m_checksumHelper.checksumEnabled() =
m_commandHandler.checksumEnabled();
auto responseMessage =
SalviaSerial::traitsTemplate::Response();
fillResponse<T>(responseMessage);
common::dt::GuardedWriteBuffer<uint8_t>
writeBuffer(m_hardwareInterface);
common::extensionCards::library::serialise
(responseMessage, writeBuffer.get_range());
m_checksumHelper.calculateAndSetChecksum
(writeBuffer.get_range());
}
private:
template <typename T>
void fillResponse(SalviaSerial::traitsTemplate::Response&
response);
slave::cache::FullKeyValueCache& m_keyValueCache;
const CommandHandler& m_commandHandler;
const RTDCache& m_rtdCache;
HardwareInterface& m_hardwareInterface;
DOBusImplementation::ChecksumHelper m_checksumHelper;
bool& m_statusChanged;
bool& m_alarmsChanged;
};
类TestHandler
{
公众:
使用Buffer=common::dt::ByteBuffer;
使用硬件接口=
通用::接口::SyncBufferProducerConsumer;
显式TestHandler(从::缓存::FullKeyValueCache&
缓存、const CommandHandler和CommandHandler,
常量RTDCache&RTDCache,硬件接口&
硬件接口、布尔值和状态更改、布尔值和报警更改)
:m_keyValueCache(缓存)
,m_commandHandler(commandHandler)
,m_rtdCache(rtdCache)
,m_硬件接口(硬件接口)
,m_状态已更改(状态已更改)
,m_alarmsChanged(alarmsChanged)
{
}
模板
无效响应()
{
m_checksumHelper.checksumEnabled()=
m_commandHandler.checksumEnabled();
自动响应消息=
SalviaSerial::traitsTemplate::Response();
fillResponse(responseMessage);
公共::dt::GuardedWriteBuffer
writeBuffer(硬件接口);
公共::扩展卡::库::序列化
(responseMessage,writeBuffer.get_range());
m_checksumHelper.calculateAndSetChecksum
(writeBuffer.get_range());
}
私人:
模板
void fillResponse(SalviaSerial::traitsTemplate::Response&
反应);
slave::cache::FullKeyValueCache&m_keyValueCache;
const CommandHandler&m_CommandHandler;
const RTDCache&m_RTDCache;
硬件界面&m_硬件界面;
DOBusImplementation::ChecksumHelper m_ChecksumHelper;
bool&m_状态发生变化;
布尔&穆阿林沙格德;
};
我需要为TestHandler类编写一个测试夹具,稍后使用这个t4xt夹具测试不同的可用响应。我需要关于在TestHandlerTest.cpp中调用这个类的建议,以及启动单元测试的方法。如果你想在Google中创建一个测试,你需要(a)从
测试::测试
类继承,(b)确保你的fixture类是默认可构造的(可以不带任何参数构造) 如果您想在Google中创建一个测试,您需要(a)从testing::Test
类继承,并且(b)确保fixture类是默认可构造的(可以在没有任何参数的情况下构造) 您是否使用任何单元测试框架?如果是这样,你应该提到它,如果可以的话,使用标签framework@Klaus我想使用google测试框架仅供参考,如果您的问题已经得到回答,请查看您是否使用任何单元测试框架?如果是这样,你应该提到它,如果可以的话,使用标签framework@Klaus我想使用谷歌测试框架供您参考,如果您的问题已经得到了回答,请参阅感谢您的回复,我们将浏览文档并在您提到的文档中再次返回,该文档提供了非常好的信息。我现在正在为不同的参数编写模拟类,并将返回以获取进一步的疑问谢谢你的回复,我将浏览文档并在你提到的文档中再次返回,该文档提供了非常好的信息。我现在正在为不同的参数编写mock类,并将返回以获取进一步的疑问