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

时间:2021-07-17 20:14:20

标签: ios swift unit-testing code-coverage

我正在尝试快速进行单元测试。我有一个名为 MyFileManagerSomeViewModel

的两个类
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
        }
    }
}

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

class LinePhoneTests: XCTestCase {

    override func setUpWithError() throws {
        testGetCachedData()
    }

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

}

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

1 个答案:

答案 0 :(得分:3)

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

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

enter image description here

打开这个菜单项:

enter image description here

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

enter image description here

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

enter image description here

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