如何解决调用EXPECT_CALL时GTest失败
我正在尝试将GTest框架用于我的项目。我创建了一个示例代码以使用Test Fixture进行测试。
#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
类。因此,我为Validation
创建了一个Mock类。在测试装置中,我试图将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
我无法理解确切的问题是什么。以上测试治具方法是否存在任何错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。