UI测试用例不显示代码覆盖率

Jak*_*kub 27 xcode osx-server ios xctest swift

我有一些使用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()
    }        

}
Run Code Online (Sandbox Code Playgroud)

这肯定应该显示一些测试覆盖率,但事实并非如此.我启用了我的机器人代码覆盖范围:

在此输入图像描述

结果:

在此输入图像描述

仍为0%.

Xcode 7.2(7C68)

编辑:示例项目:https://Kettu@bitbucket.org/Kettu/so_34718699.git

Aru*_*nan 1

如果您只有 UI 测试目标,就会发生这种情况。添加单元测试目标。然后再次运行测试。这次你将看到代码覆盖率。样本目标

在此输入图像描述

如果没有单元测试代码,UITestcase 不会提供覆盖率数据。你可以试试这个。在 Viewcontroller 中有一个按钮,将 IBAction 附加到它。并为其创建 UITestcase。检查使用和不使用 UITestcases 的代码覆盖率。你会看到差异。差异将为您提供 UITestcase 的代码覆盖率。截至目前,Xcode 不单独提供代码覆盖率数据。它取决于单元测试用例。

没有 UI TestCase 的测试覆盖率 带有 UI 测试用例

---用你的代码我已经注释掉了你的

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

}
Run Code Online (Sandbox Code Playgroud)

来自 TestDemoUITests ,结果是这样的 没有 UITesting 代码

对于你的 UITestcase 如下 与 UITestcase

现在很明显,UITestcase 添加到单元测试用例中以实现代码覆盖率。

  • 这不是 UI 测试的覆盖范围 (4认同)