XCTestCase
クラスを使用して記述されたテストがいくつかあり、コードカバレッジを計算したいと思います。通常のテストではボットにうまく表示されますが、UIテストでは常に0%です。
最も簡単なテスト:
import XCTest
class FAQUITests: XCTestCase {
let app = XCUIApplication()
override func setUp() {
super.setUp()
app.launch()
}
func openFaqView() {
app.navigationBars["NavigationBar"].buttons["FAQ"].tap()
}
func testFaq() {
openFaqView()
app.tables.cells.elementBoundByIndex(0).tap()
}
}
そして、これは確かにある程度のテストカバレッジを示すはずですが、そうではありません。ボットコードカバレッジを有効に設定しました:
そして結果:
それでも0%。
Xcode 7.2(7C68)
編集:サンプルプロジェクト: https://[email protected]/Kettu/so_34718699.git
「カバレッジデータの収集」がテストスキームでアクティブになっているかどうかを確認します。
これは、UIテストターゲットしかない場合に発生します。ユニットテストターゲットを追加します。そして、もう一度テストを実行します。今回はコードカバレッジが表示されます。
UITestcaseは、単体テストコードなしではカバレッジデータを提供しません。あなたはこれを試すことができます。ビューコントローラにボタンがあり、それにIBActionをアタッチします。そしてそれにUITestcaseを作成します。 UITestcasesがある場合とない場合のコードカバレッジを確認します。違いがわかります。この違いにより、UITestcaseによるコードカバレッジが得られます。現在のところ、Xcodeはコードカバレッジデータを個別に提供していません。ユニットテストケースに依存します。
---あなたのコードで私はあなたをコメントアウトしました
func testStepper(){
let steppersQuery = app.steppers steppersQuery.buttons["Increment"].tap() steppersQuery.buttons["Decrement"].tap() } func testSegmented() { app.buttons["Second"].tap() app.buttons["Fourth"].tap() app.buttons["Third"].tap() app.buttons["First"].tap() }
UITestcaseがコードカバレッジのためにユニットテストケースに追加されたことは、今ではほとんど明らかです。