스위치 코드 덮어쓰기
C0 범위만 사용할 수 있지만 없는 것보다 훨씬 좋습니다.
코드 덮어쓰기가 없으면 단원 테스트가 어디까지 덮어쓸지 모르고, 테스트 용례를 쓰는 동기도 높아지기 어렵다.
다음은 Xcode7.1을 통해 확인할 수 있습니다.
1. 테스트 대상
샘플 프로젝트로 제작
SwiftCoverage
.템플릿은 무엇이든 가능하지만 먼저 iOS-Single View Application으로 지정됩니다.여기에
User.swift
를 추가하여 테스트 대상으로 삼는다.User.swift
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. 작성 단위 테스트
SwiftCoverageTests/SwiftCoverageTests.swift는 이미 존재할 것입니다. 이를 다음과 같이 변경합니다.
SwiftCoverageTests.swift
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. 덮어쓰기 활성화
덮어쓰기를 측정하기 위해서는 스키마를 편집해야 합니다.이것은 아래와 같다.
켜기
Product > Scheme > Edit Scheme...
, [테스트]를 선택합니다.그리고
Gather coverage data
를 유효하게 한다.4. 테스트 실행 및 측정 결과
Product > Test
또는 Cmd-U에서 유닛 테스트를 수행합니다.(이 샘플에서 단원 테스트는 모두 통과해야 한다)
오른쪽 메뉴에서 보고 탐색기를 표시하고 덮어쓰기 탭을 선택하면 각 소스 코드에 대해 덮어쓰기를 확인할 수 있습니다.
또한 두 번 클릭
User.swift
하면 해당 코드로 이동하여 행에 따라 실행되는지 확인합니다.여기서 convenience init가 전혀 테스트되지 않은 것을 볼 수 있습니다.
5. 테스트 수정
아까 결과에서 알 수 있듯이 convenience init의 테스트 용례가 부족하기 때문에 다음과 같이 추가됩니다
testInit()
.SwiftCoverageTests.swift
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")
}
}
그리고 단원 테스트를 한 번 더 실시하고 커버 범위를 확인하면 이번에는 100%라는 것을 알 수 있다.Reference
이 문제에 관하여(스위치 코드 덮어쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zakkied/items/7d77bdb7585cde23cfab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)