Мне не удалось заставить тесты работать в моем приложении Vapor. Похоже, компоновщик просто не находит ни одного из тестируемых классов приложений. Чтобы сузить проблему, я попытался создать простейший из возможных тестов, используя шаблон приложения по умолчанию. Шаги показаны ниже. Если кто-нибудь может сказать мне, что я делаю неправильно, или что они могут воспроизвести проблему, я был бы очень благодарен.
- Создайте новый проект.
$ vapor new Foo Cloning Template [Done] $ cd Foo $ mkdir -p Tests/ModelTests
- Добавьте фиктивный тест, который ссылается на класс в проекте по умолчанию.
$ cat > Tests/ModelTests/PostTests.swift import XCTest @testable import App class PostTests: XCTestCase { func testPost() { print(Post.self) XCTAssertEqual("a", "a") } } ^D
- Создайте проект.
$ vapor build No Packages folder, fetch may take a while... Fetching Dependencies [Done] Building Project [Done]
- Запустите тесты.
$ vapor test Testing [Failed] Log: swift-test: error: no tests found to execute, create a module in your `Tests' directory
- К сожалению, похоже, нам нужно удалить «Тесты» из раздела exclude: Package.swift.
$ vi Package.swift ... remove Tests from exclude: ....
- Попробуйте еще раз.
$ vapor test Testing [Failed] Log: <unknown>:0: error: build had 1 command failures swift-test: error: exit(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/mark/tmp/Foo/.build/debug.yaml test
- Попробуйте напрямую выполнить командную строку, показанную выше.
$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/mark/tmp/Foo/.build/debug.yaml test Linking ./.build/debug/FooPackageTests.xctest/Contents/MacOS/FooPackageTests Undefined symbols for architecture x86_64: "__TMaC3App4Post", referenced from: __TFC10ModelTests9PostTests8testPostfT_T_ in PostTests.swift.o __TMaMC3App4Post in PostTests.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
Такое же поведение я вижу и в своем собственном проекте: компоновщик не находит классы из приложения, на которое ссылается тест.
Решено, см. комментарий ниже.
AppTests
и посмотрите, решит ли это некоторые проблемы. - person Logan   schedule 14.11.2016