안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️입니다.
.
저번 포스팅에서는 유닛 테스트에 대해 간단히 알아보았습니다.
오늘은 유닛 테스트 지식을 바탕으로 간단한 예제를 만들어 보도록 하겠습니다.
.
아래의 글을 참고하시면 오늘 포스팅에 대해 더욱 잘 이해할 수 있을 것 같습니다.
간단 예제
우선 테스트를 위한 코드를 작성해 보도록 하겠습니다.
import Foundation
class Calculator {
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
}
- 간단하게 Int 파라미터 2개를 받아 더하여 결과를 출력하는 함수를 만들었습니다.
❗️여기서 잠깐❗️
.
유닛 테스트를 진행하기 위해서는 타겟을 지정해야 합니다.
타겟 방법은 아래와 같이 2가지 방법이 있습니다.
1. Target Membership 을 통해 타겟을 지정해준다.
2. @testable import 를 통해 타겟을 지정해준다.
방법1. Command + U
방법2. Test Navigator에서 실행 버튼 클릭
방법3. 코드 창에서 다이아몬드 모양 클릭
.
.
1. 테스트 성공 시
// 실제 테스트에서 사용될 메서드 블럭입니다.
func testMethod() throws {
print("testMethod() 호출")
// 테스트 소스
let calculator = Calculator()
let result = calculator.add(2, 3)
XCTAssertEqual(result, 5, "더하기 비교 결과값이 다름")
// testMethod()가 종료될 때 실행되는 코드 블럭입니다.
// 먼저 선언된 블럭이 나중에 실행되는 LIFO 구조입니다.
addTeardownBlock {
print("addTearDownBlock 호출")
}
}
- 처음에 만들었던 Caculator 의 add 메서드를 테스트 하려고 합니다.
- 2 와 3 의 인자를 받아 XCTAssertEqual 를 통해 5가 맞는지 틀린지 테스트를 진행합니다.
- 결과는 테스트 성공 으로 표시가 됩니다.
2. 테스트 실패 시
- 처음에 만들었던 Caculator 의 add 메서드를 테스트 하려고 합니다.
- 2 와 3 의 인자를 받아 XCTAssertEqual 를 통해 6가 맞는지 틀린지 테스트를 진행합니다.
- 결과는 테스트 실패로 표시가 됩니다.
이상으로 간단하게 유닛 테스트 ( Unit Test ) 간단 예제에 대해 알아보았습니다.
전체 테스트 소스는 아래에 첨부하도록 하겠습니다.
import XCTest
@testable import RxSwift_Study_1
final class RxSwift_Study_1Test2: XCTestCase {
// 타입 메서드로 시작 전 딱 한 번만 호출됩니다.
// 모든 테스트 메서드에서 실행 전 정의하거나 초기화할 작업에 대해 구현합니다.
override class func setUp() {
super.setUp()
print("전체 테스트 시작!")
}
// 각 테스트 메서드가 실행되기 전에 실행됩니다.
// 각각 테스트 메서드에서 사용될 것들에 대해 초기화 하는 작업에 대해 구현합니다.
override func setUpWithError() throws {
try super.setUpWithError()
print("테스트1 시작!(setUpWithError)")
}
// setUpWithError 와 동일하지만 다른 점은 실행 도중 발생한 에러에 대해 처리할 수 있는 점입니다.
override func setUp() {
super.setUp()
print("테스트1 시작!(setUp)")
}
// 실제 테스트에서 사용될 메서드 블럭입니다.
func testMethod() throws {
print("testMethod() 호출")
// 테스트 소스
let calculator = Calculator()
let result = calculator.add(2, 3)
XCTAssertEqual(result, 6, "더하기 비교 결과값이 다름")
// testMethod()가 종료될 때 실행되는 코드 블럭입니다.
// 먼저 선언된 블럭이 나중에 실행되는 LIFO 구조입니다.
addTeardownBlock {
print("addTearDownBlock 호출")
}
}
// 각각의 테스트가 종요되고 나서 호출됩니다.
// 메서드 수행 후 정리하는 작업을 오버라이드하여 구현합니다.
override func tearDown() {
super.tearDown()
print("테스트1 종료(tearDown)")
}
// tearDown() 메서드와 마찬가지로 각각의 테스트 종료 후에 호출 됩니다.
// 다른 점은 해당 메서드는 실행 도중 발생한 에러에 대해 처리가 가능합니다.
override func tearDownWithError() throws {
try super.tearDownWithError()
print("테스트1 종료(tearDownWithError)")
}
// 타입 메서드로 모든 테스트가 종료되고 딱 한번만 호출됩니다.
// 모든 테스트를 마치고 정리해야 할 작업에 대해 구현합니다.
override class func tearDown() {
super.tearDown()
print("전체 테스트 종료!")
}
}
감사합니다.
참고
'iOS 🖥️ > 유틸' 카테고리의 다른 글
[Test] 유닛 테스트 ( Unit Test ) 기본 (0) | 2024.02.06 |
---|