development

XCTest의 기본 모듈을로드 할 수 없습니다

big-blog 2020. 5. 27. 08:10
반응형

XCTest의 기본 모듈을로드 할 수 없습니다


Xcode에서 신속하게 작업하고 있으며 기본적으로 XCTest를 참조하는 테스트 파일을 만듭니다.

대상 멤버십을 기본 프로젝트로 설정하면이 오류가 발생합니다

XCTest의 기본 모듈을로드 할 수 없습니다

이 대상 멤버십을 설정하지 않으면 테스트가 제대로 실행되고 모든 것이 제대로 작동합니다.

추신 : 나는 새롭지 않고 어리석은 질문 일 것입니다.


기본 프로젝트는 XCUnit 프레임 워크와 연결되지 않습니다. 프로젝트에 대해 별도의 테스트 대상을 작성해야합니다 (아직없는 경우), 테스트 대상 파일을 해당 대상에 추가하십시오.

  1. 프로젝트 네비게이터에서 프로젝트를 선택하십시오. 편집기에서 프로젝트 설정이 열립니다.
  2. 타겟이 나열된 열 하단의 "+"버튼을 클릭하십시오.
  3. iOS 프로젝트 템플릿으로 작업하는 경우을 선택 iOS > Test > iOS Unit Testing Bundle합니다.

    OS X 프로젝트 템플릿 에서 작업중인 경우을 선택 OS X > Test > OS X Unit Testing Bundle합니다.


문제의 파일이 기본 대상이 아니라 테스트 대상에만 있는지 다시 확인하십시오. 테스트 대상 만 해당 프레임 워크를 가져옵니다.


테스트 파일 / 클래스를 실수로 테스트 대상이 아닌 기본 대상에 추가했습니다. 그렇게 간단합니다.

해결책:

1) 주요 대상에 대한 "빌드 단계"탭의 "컴파일 소스"목록에서 테스트 파일을 제거하십시오.

2) 테스트 대상의 "빌드 단계"탭에서 "컴파일 소스"에 동일한 파일 추가

문제를 해결해야합니다


macOS 동적 프레임 워크 대상을 만들면이 오류가 발생합니다 XCTest.framework( 링크 는 테스트 대상이 아닌 프레임 워크 대상입니다).

이 경우 문제는 다음을 추가하여 해결됩니다.

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks

프로젝트의 "빌드 설정 / 프레임 워크 검색 경로"로


이 페이지와 같은 스택 오버플로 페이지에서 많은 문제 해결 및 수신 거부 후 다른 iOS 단위 테스트 문제 해결 페이지에서 언급되지 않은 세부 정보를 찾을 수있었습니다.

프로젝트에서 CocoaPods를 사용하는 경우 기본 애플리케이션의 대상 내에 중첩 된 테스트 대상을 포함해야합니다. 실행 테스트 대상을 생성 한 경우 podfile에 포함되지 않을 수 있습니다 pod init. Podfile은 다음과 같아야합니다.

target 'YourApp' do
    target 'YourAppTests' do
        inherit! :search_paths
        # Pods for testing
    end
end

Podfile을 저장 pod install한 후 실행하십시오 .

그것이 도움이되기를 바랍니다!


이것은 약간 늦었지만해야 할 일은 다음과 같습니다.

File> New> Target> iOS Unit Testing Bundle을 클릭하십시오.

그리고 거기에 테스트를 추가하십시오. 이것은 나를 위해 일했습니다. 문제는 프로젝트를 만들 때 단위 테스트 생성을 선택하지 않았다는 것입니다. 이것이 누군가를 돕기를 바랍니다.


이 문제는 프로젝트에서 두 번 발생합니다.

  1. 새 프로젝트를 만들 때 프로젝트에 UnitTestingBundle을 추가하지 않은 경우
  2. 때때로 CocoaPods를 프로젝트에 설치할 때

1 : 답변 :

  • 파일로 이동 파일을 클릭하십시오.

  • 그런 다음 첫 번째 옵션 새로 작성을 클릭하십시오.

  • 그것을 클릭하면 대상에 대한 일부 옵션 클릭이 표시됩니다.

  • 그런 다음 검색 창에서 IOS 단위 테스트 번들 검색 및 문제 추가가 해결됩니다.

  • 컴파일러가 이것을 추가 할 수있는 권한을 부여 할 수 없다면 아래에 주어진 두 번째 방법을 시도하십시오.

2. CocoaPod 문제에 답하십시오 :

  • 제품으로 이동 제품을 클릭하십시오.

  • 정리를 클릭하거나 cmd + k를 누르십시오.

  • 문제가 해결되었습니다.


테스트 프레임 워크를 선택할 때 모든 모듈에 대해 대상 멤버십이 선택 해제되어 있는지 확인하십시오. View-> Utilities-> Show File Inspector를 선택하여 Target Membership 옵션을 볼 수 있습니다.


허용되는 답변이 대부분이 문제를 해결하지만이 오류를 해결할 수있는 방법이 하나 더 있습니다.

이미 확인한 경우 :

@pwc @ nick-n과 다른 사람들이 지적했듯이

  1. ClassTest.swift이되도록 보장함으로써 대상 멤버십 파일 테스팅 대상에 부착.
  2. ClassTest.swift것입니다 하지 당신의 주요 응용 프로그램 대상> 빌드 소스> 컴파일 소스에서 볼 수

확인할 수있는 다른 사항은 다음과 같습니다.

당신의 .podspecs파일에

source_files테스트 디렉토리를 직접 또는 간접적으로 포함하지 않는지 확인하십시오 .

예를 들면 다음과 같습니다.

s.source_files = ["Classes/**/*.{swift}", "Classes/**/*.{xib}"]
s.exclude_files = ["Classes/Exclude", "Classes/MyPodProjTests/"]

Note that Classes/**/*.{swift} includes everything overriding the fact that the directory MyPodProjTests must be excluded.

Solution:

s.source_files = ["Classes/MyPodProj/**/*.{swift}", "Classes/**/*.{xib}"]

Note: This is extremely edge case and completely human error but I thought it will be worth point out.


Just as @Alfishe mentioned above:

You have to remove the test files from Compiler Sources under Build Phases

As shown below


enter image description here


I did all the above, but still I was not allowed to access the methods I wanted to test. But before I wrote any test case built the project once and then the methods were accessible to test. So do try it and let me know if it solved any ones problem.


I had the same problem and the solution for me was to:

  1. Select my scheme
  2. Edit Scheme...
  3. Then when Scheme configuration window is opened select left tab named "Test" to be redirected here: enter image description here
  4. Like you can see my UITests are not added here but exist in my project so I had just to tap plus button and select my UITests target like this: enter image description here
  5. Then tap "Add" button and close configuration view
  6. Finish with a clean of project and try again it should work
  7. And don't forget to verify that too: https://developer.apple.com/library/archive/qa/qa1954/_index.html

Hope this answer will help.

PS: one last think in my Test target in build settings I had to check these property that was not configured correctly:

DEBUG_INFORMATION_FORMAT = dwarf; 
ONLY_ACTIVE_ARCH = YES;
VALIDATE_PRODUCT = NO;

참고URL : https://stackoverflow.com/questions/29965397/cannot-load-underlying-module-for-xctest

반응형