Qt の QTestLib 単体テスト フレームワーク + GMOck を使用しています。
単体テストで QTcpSocket から VerifySendData() メソッドへのデータを単純に受信するために、gMock を使用してモック サーバーをセットアップしようとしています。
誰かがモックオブジェクトgMOCKを作成する方法の例を教えてくれたら(EXPECT CALL、モックオブジェクトを作成する)
#ifndef TST_TCPCOMMTEST_H
#define TST_TCPCOMMTEST_H
#include <QtCore/QString>
#include <QtTest/QtTest>
#include <QTcpSocket>
#include <QTcpServer>
class TcpCommTest : public QObject
{
Q_OBJECT
private:
QTcpSocket* pTestSocket;
QTcpSocket* pMockSocket;
QTcpServer* pMockServer;
public:
TcpCommTest();
public slots:
void connectMockServer();
private Q_SLOTS:
void initTestCase();
void VerifySendData();
void cleanupTestCase();
};
#endif // TST_TCPCOMMTEST_H
#include "tst_tcpcommtest.h"
#include <QtDebug>
#include <QtCore/>
#include <QtTest/QtTest>
#include <QtNetwork/QtNetwork>
#include <gmock/gmock.h>
void TcpCommTest::connectMockServer()
{
cout << "connection attempt" << endl;
pMockSocket = pMockServer->nextPendingConnection();
}
void TcpCommTest::initTestCase()
{
pMockSocket = NULL;
pMockServer = new QTcpServer();
//I want to use gMock here to create MockTCP Server
EXPECT_CALL(pMockServer,someMethod(1).Times(AtLeaset(1));
EXPECT_CALL(pMockServer,someMethod(2).Times(AtLeaset(1));
//pMockServer->listen( QHostAddress("127.0.0.1"), 2000 );
//connect( pMockServer, SIGNAL(newConnection()), SLOT(connectMockServer()) );
pTestSocket = new QTcpSocket();
pTestSocket->connectToHost( QHostAddress("127.0.0.1"), 2000 );
QVERIFY( pTestSocket->waitForConnected( 1000 ) );
QVERIFY( pTestSocket->state() == QTcpSocket::ConnectedState );
}
void TcpCommTest::VerifySendData()
{
int i=0;
QVERIFY( pMockSocket != NULL );
}
QTEST_MAIN(TcpCommTest);