태그 보관물: unit-testing

unit-testing

Xcode 단위 테스트에서 @testable을 사용할 때 “해당 모듈 없음” 표시 @testable import myModuleName됩니다. 나는 시도했다 OptionClean Build Folder로

최근에 Xcode 7 베타 5로 업데이트했습니다. 이전 프로젝트에 단위 테스트를 추가하려고했지만 “No such module [myModuleName]”오류 메시지가 표시 @testable import myModuleName됩니다.

여기에 이미지 설명을 입력하십시오

나는 시도했다

  • OptionClean Build Folder로 프로젝트 정리
  • 빌드 옵션에서 “테스트 가능”(디버그)이 예로 설정되어 있는지 확인
  • 테스트 대상을 삭제 한 후 iOS 단위 테스트 번들을 다시 추가

이 프로젝트에서는 아무것도 작동하지 않았습니다 (그러나 다른 프로젝트에서 작업하기 위해 테스트를 받았습니다). 다른 사람 이이 문제를 겪고 해결 했습니까?



답변

가져 오려는 모듈 이름을 확인하십시오 @testable import "ModuleName". 모듈 이름은 동일해야합니다.Target->Build Settings-> Product Module Name


답변

나를 위해 일한 대답

대답은 빌드에 실패한 프로젝트에 오류가 있다는 것입니다. (코드의 매일 버그 일뿐입니다.) 오류를 수정하고 다른 깨끗하고 빌드 한 후에 효과가있었습니다.

이 오류는 처음에는 나타나지 않았습니다. 그들이 나타나게하려면 :

  • “No such module”오류를 발생시키는 전체 테스트 파일을 주석 처리하십시오.
  • 프로젝트를 다시 실행하십시오.

다른 오류가 있으면 지금 표시해야합니다. 수정 한 다음 테스트 파일 코드의 주석을 해제하십시오. “No such module”오류가 사라졌습니다.


이렇게해도 다른 사람의 문제가 해결되지 않으면 다음을 시도해보십시오.

빌드 폴더 정리

제품 메뉴를 열고을 누른 상태 Option에서 “빌드 폴더 정리 …”를 클릭하십시오.

여기에 이미지 설명을 입력하십시오

테스트 가능성 사용이 예로 설정되어 있는지 확인하십시오.

프로젝트 네비게이터에서 프로젝트 이름을 클릭하십시오. 빌드 설정을 선택하고 아래로 스크롤하여 빌드 옵션으로 이동하십시오. 테스트 가능성 사용이 예 (디버그 용)인지 확인하십시오.

여기에 이미지 설명을 입력하십시오

테스트 대상 삭제 및 다시 추가

다른 일을 한 경우 내 추측은 아마도 이것을 할 필요가 없다는 것입니다. 그러나 그렇게하면 이미 작성한 단위 테스트를 저장하십시오.

프로젝트 네비게이터에서 프로젝트 이름을 클릭하십시오. 그런 다음 테스트 대상을 선택하십시오. 아래쪽에서 빼기 (-) 단추를 클릭하여 삭제하십시오.

여기에 이미지 설명을 입력하십시오

그런 다음 더하기 (+) 버튼을 클릭하고 iOS 단위 테스트 번들을 선택하여 다시 추가하십시오. 보시다시피 동일한 방법으로 UI 테스팅 번들을 추가 할 수도 있습니다.

다른 아이디어들

  • 모든 필수 클래스가 테스트 대상의 구성원인지 확인하십시오.
  • 필요한 모든 라이브러리를 추가했는지 확인하십시오.
  • 모듈 이름이 올바르게 작성되었는지 확인하십시오 ( 이 답변 참조 ).

또는…

효과가있는 다른 것을 찾으면 아래에 의견이나 답을 남겨주세요

관련


답변

문제는 테스트의 iOS 배포 대상이 기본 대상과 동일하게 설정되지 않았다는 것입니다. 따라서 이것을 확인하십시오.

테스트 대상에서 :

Build Settings -> iOS Deployment Target -> iOS<same as the target you are testing>


답변

그래서 이것은 이전 제안에서 제안 된 모든 솔루션을 시도한 후 코드가 작동하도록하는 방법입니다.

  • 프로젝트의 빌드 설정에서 ‘테스트 기능 사용’을 ‘예’로 설정했습니다.
  • 또한 프로젝트의 빌드 설정에서 ‘모듈 정의’를 ‘예’로 설정했습니다.
  • 내 프로젝트 내에서 일반 .swift 파일 (들)의 경우, 말 의 MyApp을 나는에 대한 쓰기 테스트 케이스로 가고 있었다, 나는이 주 ” MyApp를 “과 ” MyAppUnitTests “대상은 아래에서 확인 대상 회원 .
  • 그런 다음 단위 테스트 파일을 선택 하고 상단의 ‘ import XCTest ‘ 아래에서 ‘ @testable import MyApp ‘을 선언하고 대상 멤버쉽 에서 “MyAppUnitTests” 확인했습니다.

그리고 모든 것이 매력처럼 작동했습니다. 도움이 되었기를 바랍니다.


답변

주의해야 할 점은 모듈 이름에 대시 문자가 있으면 -대신 밑줄로 참조해야한다는 것 _입니다. 어떤 이유로 나는 이것이 문제 일 것으로 의심되었고 실제로 내 문제였습니다.

예. @testable import Ocean-Swift된다@testable import Ocean_Swift

@testable구문을 사용하는 경우 테스트 대상에 프로덕션 코드를 포함시키지 마십시오. 나는 이것이 불가사의 한 이상을 초래할 것이라는 것을 알았다.


답변

두 대상의 빌드 설정에 오류가있는 것 같습니다. 다음을 확인해야합니다.

  • ENABLE_TESTABILITY 두 대상 모두에 대해 예입니다.
  • PRODUCT_MODULE_NAME테스트 대상 의 값은 응용 프로그램 의 값과 달라야합니다.

답변

확인해야 할 또 다른 사항 : Objective-C 프로젝트가 있지만 Swift에서 단위 테스트를 작성하는 경우 주 대상이 하나 이상의 Swift 파일을 사용해야합니다!


더 많은 정보:

Objective-C 프로젝트를 진행하고 있었지만 Swift에서 단위 테스트를 작성하고 싶었습니다.

필요한 ProjectName-Bridging-Header.h 파일을 생성하기 위해 Swift 파일을 기본 대상에 추가하고 테스트를 작성했으며 모든 것이 제대로 작동했습니다.

나중에 Swift 파일이 필요 없다고 생각했기 때문에 Swift 파일을 삭제했습니다 (모든 주요 대상 코드는 Objective-C에 있습니다 … Swift에서만 테스트를 작성했습니다).

“clean / clean build folder”를 수행 한 후 “No Such Module”문제가 나타난 후 나중에 문제가 발견되지 않았습니다. 머리를 긁은 후 새로운 빈 Swift 파일을 추가했는데 문제가 해결되었습니다.

나는 Swift 파일을 사용하거나 사용하지 않고 여러 번 테스트했으며 그 파일 만 작동합니다 … 그래서 프로젝트에 빈 파일을 남겨 두거나 Objective-C를 Swift로 변환하거나 일부를 추가해야합니다 Swift로 작성된 프로젝트에 새로운 코드.