programing

번들 UIT 테스트가 손상되었거나 필요한 리소스가 누락되어 로드할 수 없습니다.번들 재설치 시도

minecode 2023. 9. 2. 09:54
반응형

번들 UIT 테스트가 손상되었거나 필요한 리소스가 누락되어 로드할 수 없습니다.번들 재설치 시도

다음 오류로 인해 테스트 케이스를 실행할 수 없습니다.

  • 번들 "UITests"가 손상되었거나 필요한 리소스가 누락되어 로드할 수 없습니다.번들을 다시 설치해 보십시오.
  • 라이브러리가 로드되지 않았습니다. @rpath/Alamofire.framework/Alamofire.
  • 이유: 이미지를 찾을 수 없습니다.

이틀 동안 검색하고 해결해 보았지만 이 문제를 해결할 수 없었습니다. 누가 도와주실 수 있나요?

저는 Xcode 10.1에서 생성된 프로젝트로 이 문제를 재현할 수 있었습니다.종속성 관리자로 Swift 4.2와 코코아 포드 1.10.0을 사용했습니다.다음과 같은 Pod 파일이 있었습니다.

# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp
  pod 'Alamofire', '4.8.1'

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

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

end

그리고 나서 제거했습니다.use_frameworks!자세한 내용은 다음 링크를 참조하십시오.

# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'

target 'MyApp' do

  # Pods for MyApp
  pod 'Alamofire', '4.8.1'    

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

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

end

다음과 같은 경고도 받았습니다.

[!] The `MyAppUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-MyApp-MyAppUITests/Pods-MyApp-MyAppUITests.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

그래서 내 앱에서 이 라인을 제거했습니다.UI 테스트 빌드 설정:

MyAppUITests build settings

후에 행실후후▁after실pod deintegrate && pod install그리고 문제가 사라졌습니다.종속성이 더 많은 프로젝트(: 여기)의 경우 다른 솔루션을 사용해야 합니다.

포드가 Framework 대상에만 적용되고 테스트 대상에는 적용되지 않기 때문입니다.포드 파일에 테스트 대상을 추가합니다.

예:

target 'MyFramework' do
  use_frameworks!
  pod 'Alamofire', '~> 4.5'
end

target 'MyFrameworkTests' do
  use_frameworks!
  pod 'Alamofire', '~> 4.5'
end

변경 테스트에값변inherit! :search_pathsinherit! :complete이 기능은 설명서를 참조하십시오.

UI 테스트 대상 빌드 설정의 배포 대상이 테스트하려는 호스트 애플리케이션과 동일하게 설정되어 있는지 확인합니다.제 경우, 나중에 UIT 테스트 대상을 추가했는데, 기본 배포 대상 iOS 12로 만들었습니다.그런 다음 iOS 12 이하에서 UIT 테스트를 실행하려고 하면 질문에 언급된 오류가 발생했습니다.

에는 UI 을 UI 테스트 대상과 .use_frameworks!.

구조로 이동하는 한 경우 도움이 되지 .use_frameworks!전체적으로 포드 파일의 맨 위에 있습니다.

오류가 있는 Pod 파일(원본):

platform :ios, '10.0'

inhibit_all_warnings!
use_frameworks!

target 'MyProject' do
  pod 'R.swift', '~> 5.0'
  pod 'Moya/RxSwift', '~> 12.0'
  # and other pods

  target 'MyProjectTests' do
    inherit! :search_paths

    pod 'iOSSnapshotTestCase', '~> 6.0'
  end

  target 'MyProjectUITests' do
    inherit! :search_paths
  end
end

오류가 있는 Pod 파일(먼저 수정 시도):

platform :ios, '10.0'

inhibit_all_warnings!
use_frameworks!

def shared_pods
  pod 'R.swift', '~> 5.0'
end

target 'MyProject' do
  shared_pods

  pod 'Moya/RxSwift', '~> 12.0'
  # and other pods

  target 'MyProjectTests' do
    inherit! :search_paths

    pod 'iOSSnapshotTestCase', '~> 6.0'
  end
end

target 'MyProjectUITests' do
  shared_pods
end

최종 작업 포드 파일:

platform :ios, '10.0'

inhibit_all_warnings!

def shared_pods
  pod 'R.swift', '~> 5.0'
end

target 'MyProject' do
  use_frameworks!

  shared_pods

  pod 'Moya/RxSwift', '~> 12.0'
  # and other pods

  target 'MyProjectTests' do
    inherit! :search_paths

    pod 'iOSSnapshotTestCase', '~> 6.0'
  end
end

target 'MyProjectUITests' do
  shared_pods
end

targets>mytestTarget>BuildSettings>에서 Runpath search Path에 프레임워크 위치를 추가해야 했습니다.실행 경로 검색 경로

프로젝트에 프레임워크를 추가하고 테스트를 실행하려고 할 때 이 오류가 발생했습니다.저는 필수가 아닌 선택사항으로 만들었고, 테스트는 성공했습니다.

Xcode 테스트 문제

The bundle UITests couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle

실행하려고 할 때 이 문제를 실행했습니다.UI Testing Bundle테스트를 위해Framework

솔루션은 간단합니다.

Build Phases -> + -> New Copy Files Phase -> <select a framework> -> Destination Frameworks 

enter image description here

결과적으로.<UI_Testing_Bundle_name>-Runner.app생성됨

레거시 빌드 시스템으로 전환하여 Xcode 10에서 이 문제를 해결했습니다.

카르타고를 사용하여 이 문제에 직면한 사람을 위해, 저는 다음을 추가하여 해결했습니다./usr/local/bin/carthage copy-frameworks스크립트 단계를 실행하여 메인 애플리케이션 대상이 아닌 UITTest 대상으로 프레임워크를 입력 파일로 추가했습니다.

1

2[![3]3

  1. 빌드 단계로 이동
  2. Copy Pods 리소스를 열고 경로 복사
  3. 복사 포드 리소스에서 복사한 경로를 붙여넣고 태그 이름 리소스를 프레임워크로 변경합니다.
  4. 청소 및 빌드
  5. UI 테스트 파일 실행

제 문제를 해결한 것은 1) 포드 파일에서 UITtests 대상을 삭제하는 단계입니다.처음에는 포드 파일에 다음과 같은 내용이 있었습니다.

target 'XUITests' do
    inherit! :search_paths   
end

포드 분해(포드 분해 사용)

포드 설치(포드 설치 포함)

프로젝트를 정리하고 프로젝트 또는 UIT 테스트 실행

내 경우에는, 그냥 제거하는 것.inherit! :search_paths파일의 구조를 변경하거나 포드를 복제하지 않고 문제를 해결했습니다.

저는 답을 보았지만 설명 없이 제 글을 올리기로 했습니다.

문제는 UI 테스트가 메인 애플리케이션을 제어하는 별도의 애플리케이션에서 수행되므로 메인 애플리케이션의 프레임워크를 사용할 수 없으므로 Cocoapods UI 테스트 앱을 사용하여 프레임워크에 경로만 상속하면 시작 시 충돌합니다.

이 문제를 해결하려면 실제로 프레임워크를 UI 테스트 앱에 복사하거나 Pod 파일을 업데이트해야 합니다.

use_frameworks!
target 'App' do
  pod 'Alamofire'

  target 'App_UnitTests' do
    inherit! :search_paths

    pod 'Quick'
    pod 'Nimble'
  end
end

target 'App_UITests' do
  pod 'Alamofire'
end

다른 프레임워크 내에서 Apollo 프레임워크를 사용하는 Xcode 11.2.옵션/필수로 변경하는 대신 임베디드로 설정하여 수정하였습니다.

다음과 같은 특정 오류:

번들 "XXX"가 손상되었거나 필요한 리소스가 누락되어 로드할 수 없습니다.번들을 다시 설치해 보십시오.라이브러리가 로드되지 않음: @rpath/Apollo.framework/Apollo

저는 그 틀을 짜넣어야 했습니다.

enter image description here

저는 UIT 테스트를 빌드할 때 오류가 발생했습니다.해결책:Targer는 잘못된 iOS 버전을 가지고 있었습니다. 저는 테스트된 Target과 동일한 버전으로 교체하고 모든 것이 작동합니다!

이 문제는 참조된 파일에서 가져오지 않은 프레임워크의 UIKit 클래스 확장에서 속성을 참조했기 때문에 발생했습니다.해당 속성을 사용하지 않아 수정되었습니다.나는 왜 그것이 애초에 컴파일되었는지 확신할 수 없습니다. 그것은 런타임 오류가 아니라 컴파일 타임 오류였습니다.

저의 경우 "My Mac(Mac Catalyst)" 대신 "My Mac"을 선택하면 테스트를 실행할 수 있습니다.

앱 대상의 모든 포드를 UI 테스트 대상에 복사해 보십시오.2019년에는 효과가 있습니다.

실제로 Cocoapods를 사용하는 경우 "pod install"만 실행하면 빌드 설정이 자동으로 업데이트됩니다.

언급URL : https://stackoverflow.com/questions/40480503/the-bundle-uitests-couldn-t-be-loaded-because-it-is-damaged-or-missing-necessary

반응형