2017-10-05 4 views
0

내 응용 프로그램 대상에서 가져온 모듈의 내부 메서드/속성에 액세스해야하는 단위 테스트가 있습니다.하위 종속성 가져 오기 실패 - @testable 가져 오기 SubModule - 선언되지 않은 유형 'InternalSubModuleType'사용

예. 액세스 할 때이 테스트에서 AppViewController.swift

import SubModule 
// do things with SubModuleType 

AppViewControllerTests.swift

@testable import App 
@testable import SubModule 

func testWithSubModule() { 
    let internalSubModuleTypeInstance = SubModule.SubModuleType().value 
    // ... run a test dependent on internalSubModuleTypeInstance 
} 

SubModule.swift

public class SubModuleType { 
    ... 
    internal let value: InternalSubModuleType 
    ... 
} 

나는 InternalSubModuleType '' '선언되지 않은 유형의 사용'을받을 .value.

  • 나는 App-Tests "대상 종속성"내가 테스트 용으로 컴파일하고있어 제도의 앱 대상 및 서브 모듈 대상 모두 YES로 "테스트 용이성 사용"을 설정 한
  • SubModule 대상을 추가했습니다.

@testable import은 이러한 조건에서 내부 표시가 된 유형에 액세스 할 수 있도록되어 있습니다. 왜이 컴파일러 오류가 발생하는지 확신 할 수 없습니다. @testable을 사용하여 내 앱 타겟에 내부 표시가되어있는 유형 인을 사용할 수는 있지만 내 서브 모듈 대상은 사용할 수 없습니다.

테스트 대상에 1 개만 허용됩니다 (@testable import) 또는 누락 된 항목이 있습니까? 엑스 코드 (9) 사용


, 테스팅 목표를 재 작성

+0

는 https://stackoverflow.com/questions/46600071/xcode-9-not-linking-indexing-correctly 은에 인덱스를 강제로 무언가를 시도 혹시라도 그것을 해결할 수 있는지 확인하십시오. 이것은 대답이 아니며 단지 관계가 있는지를 확인하는 것입니다. –

+0

Xcode를 종료하고, 파생 된 데이터를 삭제하고, 여러 번 다시 열고 재 컴파일하려고 시도했지만 작동하지 않습니다. 파생 데이터를 삭제하면 다시 색인화됩니다. 이것은 매우 유사하지만 Xcode 9의 버그인지 궁금합니다.이 프로젝트의이 설정은 새로운 것이지만 (비교 Xcode 9 출시 이후) 비교 대상은 없습니다. –

+0

나는 이것을 개선 한 다음을 시도했다. 문제의 일부가 의심 스럽다. Xcode가 내 생각에 다른 방식으로 작동한다는 것이다. - 앱 대상을 변경하십시오. - 계속 진행하면서 각 소스 파일 저장 - CMD-S - 빌드 앱 - 단위 테스트 대상으로 전환 - 파일을 저장하고 변경합니다. 이것은 앱 변경 사항을 픽업하는 것으로 보이지만 항상 직설적 인 것은 아닙니다. 그것은 백그라운드에서 천천히 색인을 붙일 수 있습니다 (매우 천천히, 그것은 작은 응용 프로그램입니다!) - 빌드 - 이것은 느린 오류 메시지를 정리하지 못하는 것 같습니다. - 테스트 실행 말씀 드린대로 문제가 다른 것으로 판단됩니다. –

답변

0

스위프트 3.2 나를 위해 트릭을 할 것 같았다.

이전 테스트 대상을 삭제하고 새 타겟을 만든 다음이 타겟을 갖고있는 모든 테스트 파일에 추가하십시오. 나는 (동일하지 않음) 비슷한 을보고 있어요