[swift] 접근 제어를 통한 테스트 용이성 증가
Swift에서 확실한 테스트 용이성을 확보하려면 접근 제어가 핵심적입니다. 접근 제어를 올바르게 활용하면 테스트 코드를 쉽게 작성하고 유지보수할 수 있으며, 코드의 안정성과 신뢰성을 높일 수 있습니다.
접근 제어란?
접근 제어는 코드 내부의 특정 부분에 대한 외부 접근을 제어하는 기술입니다. Swift에서는 open
, public
, internal
, fileprivate
, 그리고 private
다섯 가지의 접근 레벨을 제공합니다.
open
및public
: 각각 모듈 외부 및 모듈 내외부에서 접근 가능한 레벨을 가리킵니다.internal
: 모듈 내부에서만 접근 가능한 레벨을 가리킵니다.fileprivate
및private
: 파일 내부 또는 해당 범위 내부에서만 접근 가능한 레벨을 가리킵니다.
테스트 가능한 코드를 위한 접근 제어 활용
모듈 간 상호작용을 위한 public
및 open
테스트를 위해서는 모듈 간 상호작용이 필수입니다. 따라서 테스트할 클래스, 구조체, 함수 등을 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
}
파일 내부 테스트를 위한 fileprivate
및 private
특정 파일 내부에서만 접근 가능한 코드의 경우에는 fileprivate
또는 private
접근 제어를 활용하여 테스트 용이성을 높일 수 있습니다. 이를 통해 외부에서 불필요한 접근을 막고 코드를 안전하게 유지할 수 있습니다.
예시:
fileprivate class InternalClass {
private var secretCode: String = "1234"
}
결론
적절한 접근 제어를 통해 테스트 용이성을 높이는 것은 안정적이고 신뢰할 수 있는 앱을 제작하기 위해 매우 중요합니다. Swift의 다양한 접근 제어 수준을 이해하고 적절히 활용함으로써 코드의 안정성을 높이고, 유지보수성을 향상시킬 수 있습니다.
더불어, 테스트 용이성을 높이기 위해 접근 제어 외에도 Protocol 등의 다른 기술도 함께 고려되어야 합니다.