Сейчас я изучаю инструменты с открытым исходным кодом для тестирования моих приложений QT GUI. После некоторых исследований я нашел многообещающее:
TUG: библиотека модульного тестирования GUI https://github.com/pedromateo/tug_qt_unit_testing_fw
К сожалению, это библиотека Linux, но я разрабатываю Windows-приложения с MSVC.
Но я не сдался и установил Cygwin. Моя идея состояла в том, чтобы скомпилировать TUG с Cygwin, а затем использовать его вместе с cygwin1.dll
в моей структуре тестирования.
TUG
компилируется с использованием qmake
Файлы проекта, создающие обычные файлы make.
Первым шагом было включить переключатель -D__MINGW32__
в разделе DEFINES моего файла проекта qmake. Это устраняет некоторые ошибки компиляции.
Затем я запустил свой qmake с:
/cygdrive/[My Windows QMake Install Path]/qmake.exe –spec cygwin-g++ tug_base_lib
Затем я запустил make, и он прекрасно скомпилировался, но на последнем шаге не удалось связать объектные файлы с libTUG.dll
, Это привело к множеству неопределенных ошибок ссылок.
Моя идея состоит в том, что make пытается связать библиотеки Windows MSVC с моим libTUG.dll
что привело к ошибке.
У кого-нибудь есть опыт использования TUG
вместе с приложениями Windows?
Соответствующий раздел в сгенерированном Makefile, где не удалось установить связь, был, вероятно, следующим:
$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP)
-$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)
-$(QMAKE) -install ln -s $(TARGET) $(TARGET0)
-$(QMAKE) -install ln -s $(TARGET) $(TARGET1)
-$(QMAKE) -install ln -s $(TARGET) $(TARGET2)
где варианты где
LINK = g++
LFLAGS = -shared -Wl,-soname,libTUG.dll.1
LIBS = $(SUBLIBS) -L/usr/X11R6/lib -L[Path of my Windows QT Libs] -lQt5Widgets_vc14-x64 -lQt5Gui_vc14-x64 -lQt5XmlPatterns_vc14-x64 -lQt5Network_vc14-x64 -lQt5Test_vc14-x64 -lQt5Core_vc14-x64 -lGL -lpthread
TARGET = libTUG.dll.1.0.0
TARGETA = libTUG.a
TARGET0 = libTUG.dll
TARGETD = libTUG.dll.1.0.0
TARGET1 = libTUG.dll.1
TARGET2 = libTUG.dll.1.0
Задача ещё не решена.
Других решений пока нет …