Unit Testing Xcodeban

Írni akarok egy multiplatformos alkalmazást Xcode-ban (swiftben). (Új Xcode 7 beta 4, swift2.0)
Csináltam egy adatbázis tesztet iOS-re. Ahhoz, hogy leteszteljem OSx-en is, csinálnom kellett ott is egy teszt fájlt és átmásoltam oda is az adatbázis tesztet, hogy lefusson. Nem lehet valahogy megcsinálni, hogy ne kelljen duplikálnom a teszt fájlokat és csak egy helyen írjam meg a közösen tesztelendő dolgokat?
Próbáltam létrehozni egy új tesztet és elkezdtem a Build Settingsben megadni az Architectures értékeket, hogy hátha sikerül megcsinálni.
Unit Test fájlt létrehozáskor az iOS csoportból választottam ki, gondolom ezért beállította az alap iOS értékeket. Scheme-ben az OSx résznél a teszthez hozzáadtam ezt a teszt fájlt. Első futtatáskor 80-as exit értékkel állt le a futtatás, mert nem volt megfelelő architectura a futtatáshoz. Ekkor állítottam át a Build Settings-et. Miután megcsináltam, már 82-es exit kóddal állt le.
Ezeket írja ki a logba:

The bundle “AppLogicTests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.
Library not loaded: @rpath/libswiftAppKit.dylib
Referenced from: (path eleje)/Build/Intermediates/CodeCoverage/App OSx/Products/Debug/AppLogicTests.xctest/Contents/MacOS/AppLogicTests
Reason: image not found

Amit nem sikerült beállítanom, hogy a Base SDK architectura szerint legyen beállítva, mert ha rányomok mondjuk a Debug melletti plusz jelre, akkor nem lehet kiválasztani csak az Any Architecture értéket, hiába adtam meg az Architectures, Valid Architectures résznél az x86_64 értékeket.
Hogyan lehetne ezt helyesen beállítani? Nem kell, hogy elindítsa egyik alkalmazást sem, tehát csak Logic teszt lenne…

Ahogy kutakodtam a neten, megtaláltam, hogy hol is van ez a lib, és manuálisan megadtam a Runpath Search Paths értéknél. Mivel alapjában véve iOS alatt választottam ki a Unit Test-et, így az OSx-et kellett külön megadni.
Tehát valahogy így:

És persze hozzáadtam a listához manuálisan a fájl elérési útját. Így most iOS-en és OSx-en is egyaránt lefut ugyanaz a teszt.
Egyetlen egy hátránya van, hogy hozzáadtam az x86_64 architecturát, így most az iOS és OSx schemenél is ki lehet választani az iPhone és OSx platformokat és nem vált magától, amikor átváltok a másik scheme-re. Tehát csak arra kell odafigyelnem, hogy a helyes platfrom legyen kiválasztva.

1 Like

Közben külön scheme-et csináltam iOS-re és OSx-re is, és abba csak és kizárólag a logic tesztet tettem be és az eredetiből meg kivettem a logic tesztet. Így persze nem fut le a logic teszt a sima iOS teszttel, hanem csak külön lehet futtatni, viszont így Xcode Server-rel megcsináltam, hogy az a két új scheme alapján teszteljen minden egyes commit-tal, így ha valami baj van, akkor azt látom a szerverről és nem lassítja a sima teszteket. Valamint így hogy kivettem a logic tesztet az eredeti iOS és OSx scheme-ből, így most már mindkettőnél csak a helyes architektura jelenik meg.
Szóval egyik sem tökéletes megoldás, de így most egész jó!