문제

단위 테스트를 위해 모든 릴리스 응용 프로그램 파일이 포함 된 Xcode에 iPhone 프로젝트 대상과 UI 장치 테스트에 유용한 코드가 포함 된 추가 파일을 작성하려고합니다.

원래 응용 프로그램 목표를 복제하여이를 수행 할 수 있습니다. 그러나 이것의 문제점은 앱 대상에 새 소스 파일을 추가 할 때마다 UnitTestui 대상에 추가해야한다는 것입니다. 큰 문제는 아니며 항상 두 대상에 파일을 추가하는 것을 기억하는 것은 불편합니다.

원래 앱 대상에 추가 된 모든 파일이 단위 테스트 대상에 추가되도록 종속성을 설정할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

Xcode에서는 서로 직접적인 종속성을 가진 대상을 만들 수 있습니다. 이를 도울 수있는 많은 비 제품 건물 대상이 있습니다. 다른 카테고리 설정이 얼마나 단순하거나 복잡한 지에 따라 새 대상을 추가 할 때 카테고리. 기본 프로젝트 대상에 직접 의존하여 단위 테스트를 실행하기위한 특정 대상을 작성하는 것은 매우 일반적이며 Apple과 여러 블로그에서 문서화됩니다.

그러나 귀하의 상황에서는 새로운 UI 테스트 대상에 대해 많은 조정을해야 할 수도 있지만 일단 설정되면 유지하기가 매우 쉽습니다. 정확한 상황을 알지 못하면 단계별 답변을 제공하는 것은 불가능하지만 다음은 일반적인 지침입니다 (상황에 맞게 조정).

  1. 대부분의 설정이 동일하므로 원래 대상의 사본을 만듭니다.
  2. 새 대상을 선택하고 검사관을 엽니 다 (⌘I)
  3. 아래에 직접 의존성, + 버튼을 클릭하고 기본 대상을 선택하십시오.
  4. 추가 문서/출처/규칙 또는 무엇이든 원하는대로 새 대상을 설정하십시오.

주위를 끌고 떨어 뜨리는 것을 선호하는 경우 원래 대상을 드래그 할 수도 있습니다 (아래에서 대상 공개 삼각형)을 새 대상으로 표시하면 종속성을 자동으로 설정합니다.

이제 테스트 대상을 활성 대상으로 선택하면 항상 해당 규칙에 따라 구축됩니다. 또한 기본 대상의 소스를 추가/변경하면 테스트 대상을 구축 할 때 올바르게 재건됩니다. 테스트 대상에 소스 파일을 추가 할 필요가 없습니다. 다양한 Xcode 문서를 읽고 사용할 수있는 많은 대상 템플릿을 사용하여 시간을내는 것이 좋습니다. 장기적으로는 제품을 훨씬 더 효율적으로 만드는 데 도움이됩니다. 매우 크거나 복잡한 프로젝트를 통해서조차도 Xcode에서 상당히 쉽게 수행 할 수있는 멋진 일이 많이 있습니다.

다른 팁

아니요. 단위 테스트 대상의 모든 단일 파일을 원하는 특별한 이유가 있습니까? 여기에는 Main.M 및 테스트하지 않은 모든 클래스 (예 : 뷰 클래스)가 포함됩니다. 실제로 Main.M이 단위 테스트에 포함되어 있으면 장치 테스트는 어떻게 제대로 실행됩니까?

앱 및 단위 테스트 대상에 연결된 정적 라이브러리로 대부분의 응용 프로그램을 구축하여 문제를 해결했습니다.

내 프로젝트의 대상은 다음과 같습니다.

  • libmyapp
    • .M 파일을 컴파일합니다
  • myapp.app
    • libmyapp (종속성)
    • 도서관과 링크 : Libmyapp.A
  • uitest.app
    • libmyapp (종속성)
    • 도서관과 링크 : Libmyapp.A

이렇게하면 추가 할 수 있습니다 .m "libmyapp"대상에만 파일을 파일하고 앱과 테스트 모두에서 사용할 수있게 해주므로 다시 컴파일 할 필요조차 없습니다.

유일한 gotcha는 정적 라이브러리가 목표 C 범주를 지원하지 않는 것 같아서 각 대상에 별도로 추가해야한다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top