2016-07-12 10 views
3

Ich habe zwei separate Ziele für Komponententests und UI-Tests in meinem Projekt neben der Haupt-App. Diese zwei Ziele haben getrennte Schemata, so dass ich sie separat auf meinem CI-Server ausführen kann. Ich überprüfe "Gather Code Coverage" in diesen beiden Schemata. Zuerst stellte ich sicher, dass alles von XCode funktioniert, indem ich diese beiden Schemata getrennt mit "Cmd + U" aufbaute und die Coverage-Daten für beide Schemas korrekt zeigten.Xcode 7.3.1 UITests Code Coverage immer bei 0%

In meiner Jenkins CI habe ich separate Jobs Für diese beiden Schemata, die Fastlane verwenden, funktioniert das Einheitentest-Schema gut und erzeugt Berichte. Aber das UI-Testschema zeigt immer 0% Deckungsbericht, egal was passiert. Ich weiß nicht, was falsch ist.

Irgendwo las ich über UI-Tests von Komponententests abhängt für die Code-Abdeckung, ist das wahr? Wenn es wahr ist, sollte ich Unit Tests ausführen, bevor ich UI Tests durchführe?

Vielen Dank im Voraus.

+0

In dieser SO Antwort könnte eine Lösung zu Ihrem Problem sein: https://Stackoverflow.com/a/48477190/1418981 – Vlad

Antwort

0

Aber das UI-Test Schema zeigt immer 0% Deckung

UI-Tests keinen Code abdecken. Es kann Ihren Code nicht sehen. Es hat noch nie von Ihrem Code gehört. Es weiß nichts von deinem Code. Es hat nichts mit deinem Code zu tun! Es klickt nur Tasten und liest die Schnittstelle Ihrer App von außen. Alles in allem "sehen" ist der Bildschirm.

+0

Danke für die schnelle Antwort @matt. Gibt es eine Möglichkeit, die Code Coverage von View Controllern zu erhalten? Wie kann Xcode diesen Abdeckungsbericht durch "Cmd + U" erhalten? –

+1

"Gibt es eine Möglichkeit, die Codeabdeckung des View Controllers zu erhalten?" Sicher, machen Sie einen Komponententest. Aber wenn Sie einen UI-Test durchführen, gibt es keinen View-Controller. _In einem UI-Test gibt es keinen App-Code._ Du bringst mich dazu, es immer und immer wieder zu sagen. – matt

+0

hab es geschafft. Gerade jetzt sah, dass UI-Tests tatsächlich "AppUITest" App im Simulator installieren, die unsere eigentliche App "App" startet. Also wie du gesagt hast sieht es nur ein Bildschirm nicht wirklich Code. –

1

Die Vorschau Antwort ist irgendwie falsch Herr. Sogar der Xcode zeigt Line-Coverage wegen UITests, also natürlich kennt UITest Ihren Code, natürlich ruft er Ihren Code auf, um Ihre UI auszuführen. Das einzige Problem ist, dass Jenkins Probleme damit hat, da es bereits einen bekannten Apple-Bug gibt. Das Debugging-Format zum Erfassen von Coverage-Daten hat Probleme mit dem Bericht. Schauen Sie sich einfach den Fehler report an.