XCTHealthKit

Build and Test codecov DOI

XCTHealthKit 是一个基于 XCTest 的框架,用于测试在 iPhone 模拟器上使用 Apple Health App 创建 HealthKit 样本。

如何使用 XCTHealthKit

您可以在 UI 测试中使用 XCTHealthKit。 API 文档 提供了 XCTHealthKit 公共接口的详细概述。

该框架具有以下功能

使用 Apple Health App 添加模拟数据

使用 XCTestCase.launchAndAddSample(healthApp:_:) throws 函数,并传入一个 NewHealthSampleInput 实例,以使用 Apple Health App 添加模拟数据

import XCTest
import XCTHealthKit

class HealthKitUITests: XCTestCase {
    func testAddMockData() throws {
        let healthApp = XCUIApplication.healthApp
        try launchAndAddSample(healthApp: healthApp, .steps(value: 71))
        try launchAndAddSample(healthApp: healthApp, .electrocardiogram())
    }
}

或者,可以使用 XCTestCase.launchAndAddSamples(healthApp:_:) throws 函数在单个调用中添加多个样本

import XCTest
import XCTHealthKit

class HealthKitUITests: XCTestCase {
    func testAddMockData() throws {
        let healthApp = XCUIApplication.healthApp
        try launchAndAddSamples(healthApp: healthApp, [
            .activeEnergy(),
            .electrocardiogram(),
            .pushes(value: 117),
            .restingHeartRate(value: 91),
            .steps()
        ])
    }
}

处理 HealthKit 授权表

您可以使用 XCUIApplicationhandleHealthKitAuthorization() throws 函数来处理 HealthKit 授权表

import XCTest
import XCTHealthKit


class HealthKitUITests: XCTestCase {
    func testHandleTheHealthKitAuthorizationSheet() throws {
        let app = XCUIApplication()
        app.launch()
        
        app.buttons["Request HealthKit Authorization"].tap()
        try app.handleHealthKitAuthorization()
    }
}

安装

可以使用 Swift Package Manager 将该项目添加到您的 Xcode 项目或 Swift 包中。

Xcode: 对于 Xcode 项目,请按照 将包依赖项添加到您的应用程序 中的说明进行操作。

Swift 包: 您可以遵循 Swift Package Manager 关于定义依赖项的文档,将此项目作为依赖项添加到您的 Swift 包中。

许可证

本项目基于 MIT 许可证。 有关更多信息,请参阅 许可证

贡献者

本项目是斯坦福大学斯坦福拜尔斯生物设计中心的一部分。 有关所有 XCTHealthKit 贡献者的完整列表,请参阅 CONTRIBUTORS.md

Stanford Byers Center for Biodesign Logo Stanford Byers Center for Biodesign Logo