web-dev-qa-db-ja.com

UIテストケースにコードカバレッジが表示されない

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()
    }        

}

そして、これは確かにある程度のテストカバレッジを示すはずですが、そうではありません。ボットコードカバレッジを有効に設定しました:

enter image description here

そして結果:

enter image description here

それでも0%。

Xcode 7.2(7C68)

編集:サンプルプロジェクト: https://[email protected]/Kettu/so_34718699.git

27
Jakub

「カバレッジデータの収集」がテストスキームでアクティブになっているかどうかを確認します。

Check Gather coverage data

2
alexem

これは、UIテストターゲットしかない場合に発生します。ユニットテストターゲットを追加します。そして、もう一度テストを実行します。今回はコードカバレッジが表示されます。 Sample Targets

enter image description here

UITestcaseは、単体テストコードなしではカバレッジデータを提供しません。あなたはこれを試すことができます。ビューコントローラにボタンがあり、それにIBActionをアタッチします。そしてそれにUITestcaseを作成します。 UITestcasesがある場合とない場合のコードカバレッジを確認します。違いがわかります。この違いにより、UITestcaseによるコードカバレッジが得られます。現在のところ、Xcodeはコードカバレッジデータを個別に提供していません。ユニットテストケースに依存します。

UITestCaseを使用しないテストカバレッジ with UI Testcase

---あなたのコードで私はあなたをコメントアウトしました

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()

}

testDemoUITestsから、結果はこれでした without UITesting code

そして、UITestcaseでは次のようになります with UITestcase

UITestcaseがコードカバレッジのためにユニットテストケースに追加されたことは、今ではほとんど明らかです。

0