если кому интересно, этот хедер позволяет добавлять классы тестов
#ifndef AUTOTEST_H
#define AUTOTEST_H
#include <QTest>
#include <QList>
#include <QString>
#include <QSharedPointer>
namespace AutoTest
{
typedef QList<QObject*> TestList;
inline TestList& testList()
{
static TestList list;
return list;
}
inline bool findObject(QObject* object)
{
TestList& list = testList();
if (list.contains(object))
{
return true;
}
foreach(QObject* test, list)
{
if (test->objectName() == object->objectName())
{
return true;
}
}
return false;
}
inline void addTest(QObject* object)
{
TestList& list = testList();
if (!findObject(object))
{
list.append(object);
}
}
inline int run(int argc, char *argv[])
{
int ret = 0;
foreach(QObject* test, testList())
{
ret += QTest::qExec(test, argc, argv);
}
return ret;
}
}
template <class T>
class Test
{
public:
QSharedPointer<T> child;
Test(const QString& name) : child(new T)
{
child->setObjectName(name);
AutoTest::addTest(child.data());
}
};
#define DECLARE_TEST(className) static Test<className> t(#className);
#define TEST_MAIN \
int main(int argc, char *argv[]) \
{ \
return AutoTest::run(argc, argv); \
}
#endif // AUTOTEST_H
функция мейн в мейн.срр
#include "TestCollector.h"
#include <iostream>
TEST_MAIN
и сам тест:
#ifndef TESTS_H
#include "TestCollector.h"
#include <QTest>
class Tests : public QObject
{
Q_OBJECT
private slots:
void test1();
void test2();
};
void Tests::test1()
{
}
void Tests::test2()
{
}
DECLARE_TEST(Tests)
#include "testclas.moc"
#endif // TESTS_H
есть небольшая проблема. Экзе файл видит только один класс, или вернее методы одного класса
допустим я пишу в кмд следующее: путь\test.exe -functions
мне выдает не все функции, а функции только одного класса
что делать?