如何获取代码覆盖率信息?

Asi*_*waz 0 unit-testing code-coverage ios swift

我正在尝试快速进行单元测试。MyFileManager我有一个名为和的两类SomeViewModel

class MyFileManager {
    static let shared = MyFileManager()
    
    func isStored(atPath path: String) -> Bool {
        return FileManager.default.fileExists(atPath: path)
    }
    func readData(atPath path: String) -> Data? {
        return try? Data(contentsOf: URL(fileURLWithPath: path))
    }
}

class SomeViewModel {
    func getCachedData() -> Data? {
        let path = "xxxxx"
        
        if MyFileManager.shared.isStored(atPath: path) {
            return MyFileManager.shared.readData(atPath: path)
        } else {
            return nil
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我写了一个测试代码。我不确定这段代码是否会给我 100% 的代码覆盖率。这是单元测试

class LinePhoneTests: XCTestCase {

    override func setUpWithError() throws {
        testGetCachedData()
    }

    func testGetCachedData() {
        let viewModel = SomeViewModel()
        
        let data = viewModel.getCachedData()
        XCTAssertFalse((data != nil))
        
        XCTAssertTrue((data == nil))
    }

}
Run Code Online (Sandbox Code Playgroud)

如何获取代码覆盖率信息?

Abi*_*ern 5

您可以采取一些措施来监视代码覆盖率,以帮助您编写测试。

打开方案中的代码覆盖率设置:

在此输入图像描述

打开此菜单项:

在此输入图像描述

然后在源文件中,您将在角落看到一个装订线:它将向您显示一个数字,指示执行此行的测试数量,并以红色显示尚未执行的行。

在此输入图像描述

您可以在构建结果中的代码覆盖率下看到百分比:

在此输入图像描述

使用这些工具,您可以编写测试来练习您需要达到 100% 的代码路径,或者您可以判断错过的测试是否重要。