본문 바로가기
카테고리 없음

[iOS/Swift] @testable

by 틴디 2023. 4. 13.
728x90
반응형
  • Swift의 기본 Access-Level은 internal 
  • internal은 외부에서 접근 불가
  • 테스트 케이스를 작성하는 동안에는 테스트 케이스에서 해당 클래스와 메서드에 대해 엑세스 해주어야 함 -> Target에서 internal로 정의 된 레벨 접근 불가능하게 됨 대부분 개발 시 따로 Access Level을 정의해 주지 않음
  • 만약 testabl로 정의하지 않으면 모든 단위에서 public으로 선언해 주어야 접근 가능

 

Solution

1. Enable Testability build setting을 Yes로 설정. Xcode 는 컴파일 중에 -enable-testing 플래그를 포함

complied 모듈에서 선언된 swift entities가 높은 레벨의 access 수준으로 설정됨

2.  @testable 속성을 추가하면 해당 scope에서 접근 레벨이 상승함. 클래스와 클래스 멤버는 open된 것 처럼 표시되고 internal은 public 처럼 동작하게 됨 코드를 변경하지 않고 플래그를 설정해서 컴파일만 수정됨

 

@testable은 internal 함수에 대하여 접근을 제공하며 fileprivagte와 private로 선언된 함수는 testable 사용시 일반적인 범위 밖에서는 표시되지 않음

 

in Use

@testable import <#ProjectTargetName#>

imort 형태로 XCTest에 포함시킴

 

Result

낮은 접근 권한을 가지는 클래스의 접근 권한을 테스트 수행을 위해 접근 권한을 넓힐 수 있음

 

 

출처 및 참고 사이트

https://medium.com/@ani.sam2015/what-is-testable-c26ee882ada4

 

 
728x90
반응형

댓글