c++ - 调用 EXPECT_CALL 时 GTest 失败
问题描述
我正在尝试为我的项目使用 GTest 框架。我创建了一个示例代码来使用测试夹具进行测试。
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <iostream>
using testing::NiceMock;
using testing::Return;
enum class ValidationErrors : std::uint8_t
{
kSuccess,
kFailure,
};
class Validation
{
public:
Validation(int Alg)
{}
virtual ValidationErrors Initialize()
{
std::cout << __FUNCTION__ << std::endl;
return ValidationErrors::kSuccess;
}
virtual ~Validation() = default;
};
class ValidationMock : public Validation
{
public:
ValidationMock() : Validation(1)
{}
MOCK_METHOD0(Initialize, ValidationErrors());
};
class Send
{
public:
Send()
{}
Send(int id, std::unique_ptr<Validation> validator) : validator_(std::move(validator))
{
std::cout << __FUNCTION__ << std::endl;
}
void Start(const std::uint32_t& size)
{
std::cout << __FUNCTION__ << std::endl;
validator_->Initialize();
}
std::unique_ptr<Validation> validator_;
};
using NiceValidationMock = NiceMock<ValidationMock>;
class SendTextFixture : public testing::Test
{
public:
SendTextFixture() : validator_(std::make_unique<NiceValidationMock>())
{
sendClass_ = Send(5, std::move(validator_));
}
std::unique_ptr<NiceValidationMock> validator_;
Send sendClass_;
};
TEST_F(SendTextFixture, DemoTest)
{
sendClass_.Start(1);
EXPECT_CALL(*validator_, Initialize()).WillOnce(Return(ValidationErrors::kSuccess));
EXPECT_TRUE(true);
}
我有Start
一个依赖于类的Validation
类。因此,我为 .In Test Fixture 创建了一个 Mock 类,Validation
我试图将其作为ValidationMock
对象传递给Start
类。在课堂上,我为方法ValidationMock
创建了一个模拟。Initialize
在 TestCase 中,我尝试使用之后调用Initialize
方法,但出现以下错误。EXPECT_CALL
1: [27630.783955]~DLT~ 764~INFO ~FIFO /tmp/dlt cannot be opened. Retrying later...
1: Running main() from gtest_main.cc
1: [==========] Running 1 test from 1 test case.
1: [----------] Global test environment set-up.
1: [----------] 1 test from SendTextFixture
1: [ RUN ] SendTextFixture.DemoTest
1: Send
1: Start
1/1 Test #1: testpackage ......***Failed 0.32 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.32 sec
我无法理解确切的问题是什么。上述测试夹具方法是否有任何错误?
解决方案
推荐阅读
- jquery - laravel jquery 3 选择下拉列表类别、类型、子类型。类型下拉返回 id 从 0 开始而不是 1
- arrays - Read() 不适用于数组中的字符串类型输入
- javascript - 计算给定代码的时间复杂度的问题
- javascript - 我需要在 classList 模板字符串 javascript 中增加一个数字
- javascript - 如何使用 px 像使用 rem 一样自动响应页面
- python - Python:在条件下使用数组的索引范围
- python-3.x - 在 Beautiful Soup 中抓取多个页面
- c# - 如何确定谁或什么杀死了我的 Windows 服务
- c++ - 为什么会发生此链接器警告和段错误?
- java - 将 JLabels 动态添加到 JScrollPane