1
我有一个QT项目Test.pro
并且想要在几个测试类中测试一些类。 Test.pro
:QT测试 - 变量/对象丢失值
QT += testlib serialport
QT -= gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
FORMS += ../Folder/mainwindow.ui
TARGET = main
CONFIG += console
CONFIG += testcase
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += \
tst_var.cpp
DEFINES += SRCDIR=\\\"$$PWD/\\\"
#LIBS += -L../libs -lserial
HEADERS += \
tst_var.h
FORMS += ../Folder/mainwindow.ui \
...
QT += gui
头文件tst_var.h
:
#ifndef TST_VAR_H
#define TST_VAR_H
#include <QObject>
#include <QtTest/QtTest>
#include <QString>
#include <iostream>
using namespace std;
class tst_var: public QObject
{
Q_OBJECT
public:
tst_var();
private slots:
void initTestCase();
void testGetName();
void cleanupTestCase();
private:
QByteArray varname;
};
#endif // TST_VAR_H
的问题是,它并不重要,我定义变量varname
它总是失去了他的价值。 tst_var.cpp
:
#include "tst_var.h"
tst_var::tst_var(){
QByteArray varname("test");
cout << "varname1:" << varname.constData() << endl;
//Output: test
}
void tst_var::initTestCase(){
//It does not make a different if I would define varname here
}
void tst_var::testGetName(){
cout << "varname2:" << varname.constData() << endl;
//Output: (nothing), so varname lose its content
}
void tst_var::cleanupTestCase(){}
我经由main
方法开始测试。 main.cpp
:
#include <QtTest/QtTest>
#include "tst_var.h"
int main(int argc, char *argv[]) {
tst_var var;
QTest::qExec(&var);
}
所以我不知道为什么变量失去其价值,以及如何解决它。