Написание юнит-теста для класса - PullRequest
1 голос
/ 16 октября 2019

У меня есть класс с конструктором, имеющим 6 аргументов. Я хочу написать тестовое приспособление для этого класса. Я попытался вызвать эти аргументы в конструкторе тестов, но мне не удалось создать тестовое приспособление

   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, позже используйте это приспособление t4xt для тестирования различных доступных ответов. Мне нужны предложения по вызову этого класса в TestHandlerTest.cpp и метод для запуска модульного теста.

1 Ответ

0 голосов
/ 16 октября 2019

Если вы хотите создать тестовое устройство в Google Test, вам нужно (а) унаследовать от класса testing::Test и (b) убедиться, что класс этого устройства является конструируемым по умолчанию (можетбыть построено без каких-либо аргументов).

...