QtのTcp Sockets APIを使ってシンクライアント/サーバを構築しました。私はそれが非常にうまく動作していることを知っています。なぜなら、私はワイヤでたくさんのデータを送ってそれを確認したからです。しかし、私のプロジェクトマネージャはユニットテストのスイートを望んでおり、Qtのテストライブラリを使ってそれらを実装しています。QTcpClientは正常に接続しますが、自分のサーバーには接続しません。どこに接続していますか?
私は単純にユニットテストでsendData()メソッドを検証するためにQTcpSocketからデータを受け取るようにダミーサーバを設定しようとしています。テストソケットに接続すると接続されていますが、ダミーサーバーとダミーソケットを接続するスロットは決して呼び出されません。
私はここで間違っているのを誰も見ることができますか? tst_tcpcommsocket.cpp
#include "tst_tcpcommsocket.h"
void TcpCommSocketTest::connectDummyServer()
{
cout << "connection attempt" << endl;
qDummySocket = qDummyServer->nextPendingConnection();
}
void TcpCommSocketTest::initTestCase()
{
qDummySocket = NULL;
qDummyServer = new QTcpServer();
qDummyServer->listen(QHostAddress("127.0.0.1"), 9000);
connect(qDummyServer, SIGNAL(newConnection()), SLOT(connectDummyServer()));
qTestSocket = new QTcpSocket();
qTestSocket->connectToHost(QHostAddress("127.0.0.1"), 9000);
QVERIFY(qTestSocket->waitForConnected(5000));
QVERIFY(qTestSocket->state() == QTcpSocket::ConnectedState);
}
void TcpCommSocketTest::sendDataTest()
{
int i=0;
QVERIFY(qDummySocket != NULL);
}
QTEST_MAIN(TcpCommSocketTest);
テストから
tst_tcpcommsocket.h
#ifndef TST_TCPCOMMSOCKET_H
#define TST_TCPCOMMSOCKET_H
#include <QtCore/QString>
#include <QtTest/QtTest>
#include <iostream>
#include <QTcpSocket>
#include <QTcpServer>
class TcpCommSocketTest : public QObject
{
Q_OBJECT
private:
QTcpSocket* qTestSocket;
QTcpSocket* qDummySocket;
QTcpServer* qDummyServer;
public:
TcpCommSocketTest();
public slots:
void connectDummyServer();
private Q_SLOTS:
void initTestCase();
void sendDataTest();
void cleanupTestCase();
};
#endif // TST_TCPCOMMSOCKET_H
から(私はダウンダウンテストクラスで壊れているように見える部分だけにコードを剥奪しました)ランの出力:
********* Start testing of TcpCommSocketTest *********
Config: Using QTest library 4.7.3, Qt 4.7.3
PASS : TcpCommSocketTest::initTestCase()
FAIL! : TcpCommSocketTest::sendDataTest() 'qDummySocket != NULL' returned FALSE.()
Loc: [-]
cleanup
PASS : TcpCommSocketTest::cleanupTestCase()
Totals: 2 passed, 1 failed, 0 skipped
ありがとうございます。それが正しい解決策でした。私の単体テストは完全に機能しています。 – dusktreader