0

Code Coverage trong Swift 2.0

_Bắt đầu từ Swift 2.0 trở đi, chúng ta đã có thể đo lường được Code Coverage. Do vậy bài viết của tác giả hôm nay xin được hướng dẫn bạn đọc cơ bản về việc sử dụng Code Coverage trong Swift. _

Code Coverage thường được sử dụng khi chúng ta viết UnitTest cho project của mình. Với Những Project nhỏ, việc kiểm soát UnitTest có thể chỉ cần tự kiểm tra là đủ. Tuy nhiên với những Project vừa và lớn, một công cụ kiểm tra mức độ Cover của UnitTest là thực sự cần thiết (kiểm tra xem mình viết các testcase đã được bao nhiêu % rồi).

1. Đối tượng Test

Ở đây chúng ta tạo một project sample mẫu tên là SwiftCoverage, Template chọn là gì cũng đc 👦, vd chọn IOS - Single View Application.

image

Tiếp đó thêm file User.swift vào project, đây chính là đối tượng mà chúng ta sẽ test.

import Foundation

class User {
    var lastName: String = ""
    var firstName: String = ""

    init() {
        self.lastName = ""
        self.firstName = ""
    }

    init (lastName: String, firstName: String) {
        self.lastName = lastName
        self.firstName = firstName
    }

    func getFullName() -> String {
        return "\(firstName) \(lastName)"
    }
}

2.Viết UnitTest

Bản thân file SwiftCoverageTests/SwiftCoverageTests.swift đã có ở trong Project rồi nên chúng ta chỉ cần thay nội dung của file như bên dưới:

import XCTest
@testable import SwiftCoverage

class SwiftCoverageTests: XCTestCase {

    func testGetFullName() {
        let user = User()
        user.lastName = "YAMADA"
        user.firstName = "Taro"
        XCTAssertEqual(user.getFullName(), "Taro YAMADA")
    }
}

3. Bật tính năng Code Coverage

Để đo lường Coverage, chúng ta cần edit Scheme trong Xcode: Chúng ta vào Product > Scheme > Edit Scheme ... chọng mục Test Sau đó tích chọn Gather coverage data.

4. Thực hiện Test và đo lường kết quả

Để thực hiện UnitTest, chúng ta vào Product > Test hoặc nhấn tổ hợp phím Cmd - U để bắt đầu

Ở menu bên phải chúng ta có thể nhìn thấy report navigator được hiển thị, chọn tab Coverage để kiểm tra được Coverage của các SoureCode

Double Click vào file User.swift những phần nào đã được UnitTest hay chưa được UnitTest chúng ta có thể dễ dàng nhận ra được, ở đây hàm init có đầu vào họ tên chưa được UnitTest (honho)

5. Sửa file Test

Từ kết quả bên trên chúng ta có thể thấy phần Init có đầu vào họ tên chưa có test case cho nó. Vậy chúng ta sẽ sửa như bên dưới đây, thêm hàm testInit() vào.

import XCTest
@testable import SwiftCoverage

class SwiftCoverageTests: XCTestCase {

    func testInit() {
        let user = User(lastName: "YAMADA", firstName: "Hanako")
        XCTAssertEqual(user.getFullName(), "Hanako YAMADA")
    }

    func testGetFullName() {
        let user = User()
        user.lastName = "YAMADA"
        user.firstName = "Taro"
        XCTAssertEqual(user.getFullName(), "Taro YAMADA")
    }
}

Sau đó chạy lại Unit Test một lần nữa, và xác nhận lại Coverage, lần này 100% UnitTest đã có (honho)

Mình nghĩ rằng đây là một công cụ thực sự hữu ích để anh em chúng ta có thể kiểm soát việc UnitTest trong project một cách dễ dàng và tường minh nhất. Hi vọng nó giúp được mọi người một phần nhỏ nào đó trong quá trình cân dự án(lay2)

Link tham khảo: http://qiita.com/zakkied/items/7d77bdb7585cde23cfab


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí