Я разрабатываю некоторый серверный код в Swift на своем Mac, но для возможного развертывания в Linux. Я создал свою структуру проекта с помощью диспетчера пакетов Swift. Я создал пару модульных тестов XCTestCase для классов. Однако я заметил, что если я устанавливаю для своего целевого продукта значение .executable
, при запуске swift test
я получаю вывод, похожий на:
Компилировать модуль Swift «MyProjUtilTests» (3 источника) Связывание ./.build/x86_64-apple-macosx10.10/debug/MyProjUtilPackageTests.xctest/Contents/MacOS/MyProjUtilPackageTests Неопределенные символы для архитектуры x86_64:
«__T012MyProjUtil16PropertyListUtilC : __T017MyProjUtilTests20PropertyListUtilTestC16testReadFromFileyyF in PropertyListUtilTest.swift.o "__T012MyProjUtil3FooCMa", referenced from: __T017MyProjUtilTests03FooC0C07testRunD0yyFSSyKXKfu_ in FooTests.swift.o "__T012MyProjUtilAAVABycfC", referenced from: __T017MyProjUtilTestsAAC11testExampleyyFSSyKXKfu_ in MyProjUtilTests.swift.o ld: symbol(s) not found for architecture x86_64 :0: ошибка: команда ссылки не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов) ошибка: завершено (1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Volumes/Без названия/SwiftDev/MyProj/MyProjUtil/.build/debug.yaml test
Однако, если я изменю свой целевой продукт на .library
и запущу swift test
, он выполнит мои тесты и завершится без ошибки. Это ошибка в диспетчере пакетов Swift? Нужно ли мне делать что-то еще, чтобы включить модульные тесты в мой исполняемый продукт? Или это ожидаемое поведение? Может ли кто-нибудь пролить свет на то, что я вижу здесь и почему? Спасибо!!