Russian Qt Forum
Ноябрь 01, 2024, 09:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTestLib как организовать тесты?  (Прочитано 3922 раз)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« : Июнь 14, 2017, 11:06 »

Как лучше организовать тесты?

Есть тесты, каждый тест отдельный .cpp файл без .h файла. Можно ли при помощи одного pro файла каждый тест собрать в отдельный файл? Можно ли все тесты засунуть в один исполняемый файл не используя .h файлы?
Записан
nvek
Гость
« Ответ #1 : Июль 12, 2017, 06:40 »

да можно, так сделать, чтобы все тесты запускались в одном екзешнике
для этого надо добавить еще один класс:
Код:
#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[]) \
 { \
QApplication app(argc, argv); \
  return AutoTest::run(argc, argv); \
 }

#endif //

и в своем тесте в конце например
Код:
DECLARE_TEST(test)
#include "test.moc"

мог что то упустить, давно не собирал тесты)
Записан
nvek
Гость
« Ответ #2 : Июль 12, 2017, 06:41 »

один минус, нельзя запустить отдельный тест с помощью ключа
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.137 секунд. Запросов: 22.