Вы не можете создать несколько приложений во время выполнения теста.Это упомянуто в официальном документе:
Должен быть создан только один объект приложения.
Также указано:
Предупреждение: данныеупоминаемые argc и argv должны оставаться действительными в течение всего времени жизни объекта QApplication.Кроме того, argc должен быть больше нуля, а argv должен содержать хотя бы одну допустимую символьную строку.
Если вы планируете использовать приложение в нескольких тестах, возможно, вы сможете создать одноэлементный экземпляр, содержащийСрок службы приложения:
struct QtApp {
auto& instance() {
static auto argc = 1;
static std::array<char*, 1> argv = {{ "my-app-name" }};
static const QApplication app = QApplication(argc, argv.data());
return app;
}
}
Теперь вам просто нужно вызвать его перед использованием ваших тестов или в основном приложении:
void MyTestCase::testSomething() {
QtApp::instance();
callSomethingThatNeedsQApp();
}
В ваших тестовых функциях, если вам нужноДоступ к экземпляру приложения, официальные документы упоминают:
Глобальный указатель qApp ссылается на этот объект приложения.Должен быть создан только один объект приложения.
Таким образом, вы можете использовать qApp
для доступа к нему или только что созданному вами синглтону.