Название: QTestLib один .exe и много классов, как?
Отправлено: nvek от Февраль 26, 2017, 17:11
собсно... насколько я знаю, для каждого цпп файла своя точка входа.. вроде.. чтобы тесты не засоряли все, надо их по разным цппшникам раскидать и не просто раскидать, а чтобы еще и фильтр работал
Название: Re: QTestLib один .exe и много классов, как?
Отправлено: nvek от Февраль 26, 2017, 18:21
http://www.qtcentre.org/threads/19935-How-do-you-run-multiple-test-classes оставлю это сюда, пока не потерял
Название: Re: QTestLib один .exe и много классов, как?
Отправлено: nvek от Февраль 27, 2017, 13:50
если кому интересно, этот хедер позволяет добавлять классы тестов #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 мне выдает не все функции, а функции только одного класса что делать?
|