Ошибки при запуске юнит-тестов в Китуре
Я новичок в Kitura и Xcode и столкнулся с некоторыми проблемами при добавлении тестовых файлов. Похоже, это связано с директивой @testing. Я настроил так же, как показано на сайте Kitura. Когда я вызываю в консоли swift build затем swift test, я получаю следующую ошибку:
Compile Swift Module 'testTests' (1 sources)
Linking ./.build/debug/testPackageTests.xctest/Contents/MacOS/testPackageTests
Undefined symbols for architecture x86_64:
"__TFC4test3OkoCfT_S0_", referenced from:
__TFC9testTests8OkoTests8test_addfT_T_ in OkoTests.swift.o
"__TMaC4test3Oko", referenced from:
__TFC9testTests8OkoTests8test_addfT_T_ in OkoTests.swift.o
ld: symbol(s) not found for architecture x86_64
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
error: exit(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/*user*/Projects/Kitura/test/.build/debug.yaml test
Однако, когда я закомментирую строку @testable import test и наберу swift build, затем swift test, я получаю следующую ошибку:
Compile Swift Module 'testTests' (1 sources)
/Users/*user*/Projects/Kitura/test/Tests/testTests/OkoTests.swift:6:17: error: use of unresolved identifier 'Oko'
let o = Oko()
^~~
<unknown>:0: warning: 'cacheParamsComputed' is deprecated
<unknown>:0: warning: 'cacheAlphaComputed' is deprecated
<unknown>:0: warning: 'keepCacheWindow' is deprecated
<unknown>:0: error: 'memoryless' is unavailable
Metal.MTLCommandBufferError:19:14: note: 'memoryless' has been explicitly marked unavailable here
case memoryless
^
<unknown>:0: error: build had 1 command failures
error: exit(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/*user*/Projects/Kitura/test/.build/debug.yaml test
Когда я пытаюсь протестировать его из проекта, сгенерированного Xcode (swift package generate-xcodeproj), я получаю ошибку компиляции:
Без тестирования файлов все работает нормально. Ниже я представляю структуру проекта:
1 ответ
Я считаю, что проблема заключается в том, что Swift не может компилировать модульные тесты для модулей, которые содержат main.swift
файл (т. е. модули, предназначенные для компиляции в исполняемые файлы, а не библиотеки для использования в других проектах). Я клонировал ваш репозиторий и смог скомпилировать и запустить модульные тесты после 1) удаления main.swift
и 2) раскомментирование проверяемого оператора импорта.