[swift] 접근 제어를 통한 테스트 용이성 증가

Swift에서 확실한 테스트 용이성을 확보하려면 접근 제어가 핵심적입니다. 접근 제어를 올바르게 활용하면 테스트 코드를 쉽게 작성하고 유지보수할 수 있으며, 코드의 안정성과 신뢰성을 높일 수 있습니다.

접근 제어란?

접근 제어는 코드 내부의 특정 부분에 대한 외부 접근을 제어하는 기술입니다. Swift에서는 open, public, internal, fileprivate, 그리고 private 다섯 가지의 접근 레벨을 제공합니다.

테스트 가능한 코드를 위한 접근 제어 활용

모듈 간 상호작용을 위한 publicopen

테스트를 위해서는 모듈 간 상호작용이 필수입니다. 따라서 테스트할 클래스, 구조체, 함수 등을 public이나 open으로 선언하여 외부 모듈에서 접근할 수 있도록 해야 합니다.

예시:

open class Calculator {
    open func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }
}

내부 구현 검증을 위한 internal

내부 구현을 검증하기 위해서도 테스트가 필요합니다. 이때 내부 구현을 검증하는 테스트를 위해서는 internal 접근 제어 수준을 활용해야 합니다.

예시:

internal struct Employee {
    var id: Int
    var name: String
}

파일 내부 테스트를 위한 fileprivateprivate

특정 파일 내부에서만 접근 가능한 코드의 경우에는 fileprivate 또는 private 접근 제어를 활용하여 테스트 용이성을 높일 수 있습니다. 이를 통해 외부에서 불필요한 접근을 막고 코드를 안전하게 유지할 수 있습니다.

예시:

fileprivate class InternalClass {
    private var secretCode: String = "1234"
}

결론

적절한 접근 제어를 통해 테스트 용이성을 높이는 것은 안정적이고 신뢰할 수 있는 앱을 제작하기 위해 매우 중요합니다. Swift의 다양한 접근 제어 수준을 이해하고 적절히 활용함으로써 코드의 안정성을 높이고, 유지보수성을 향상시킬 수 있습니다.

더불어, 테스트 용이성을 높이기 위해 접근 제어 외에도 Protocol 등의 다른 기술도 함께 고려되어야 합니다.

Swift 공식 문서 - 접근 제어