Ich erstellte eine ausführbare Datei mit Swift über und möchte jetzt ein paar Tests dafür schreiben. Dies scheint bei Bibliothekspaketen überhaupt kein Problem zu sein, in diesem Fall füllt Swift auch das Verzeichnis Tests
mit einem Testmodul, das gut über swift test
läuft. Für eine ausführbare Datei wird nur ein leeres Verzeichnis Tests
erstellt.Testen einer ausführbaren Datei mit Swift
Beim Versuch, Tests für meine ausführbare Datei aus Xcode oder über swift test
auszuführen, stoße ich auf Linkerprobleme, die anscheinend angeben, dass Swift den Inhalt meines main.swift nicht mit den Tests verknüpfen kann. Ich bin mir nicht sicher, was ich hier machen kann. Ich habe versucht, in Xcode herumzuspielen, um neue Rahmenziele zu erstellen, die verlinkt werden sollen, aber nichts davon würde von swift test
übernommen werden, soweit ich das beurteilen kann. Ich habe es auch nicht über Xcode geschafft. Das Folgende ist die Ausgabe von swift test
.
Compile Swift Module 'swifttest' (1 sources)
Linking ./.build/debug/swifttest
Compile Swift Module 'swifttestTests' (1 sources)
Linking ./.build/debug/swifttestPackageTests.xctest/Contents/MacOS/swifttestPackageTests
Undefined symbols for architecture x86_64:
"__TF9swifttest3fooFT_SS", referenced from:
__TFFC14swifttestTests14SwifttestTests7testFooFT_T_u0_KzT_SS in swifttestTests.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-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/kilian/Desktop/swifttest/.build/debug.yaml test
Dies sind die Inhalte meiner Dateien als Referenz. Es ist ein minimales Beispielprojekt.
main.swift
public func foo() -> String {
return "bar"
}
print(foo())
swifttestTests.swift
import Foundation
import XCTest
import swifttest
class SwifttestTests: XCTestCase {
func testFoo() {
XCTAssertEqual("bar", foo())
}
}
Verzeichnislayout
.
├── Package.swift
├── Sources
│ └── main.swift
└── Tests
└── swifttestTests
└── swifttestTests.swift
Sie haben meinen Tag gerettet! Ich danke dir sehr :) – pushkarnk