Fastlane 자동 배포에서 유닛 테스트와 통합 테스트를 구현하는 방법은?
_____네, Fastlane은 테스트 실행 자동화도 지원합니다. `scan`이라는 액션을 사용하여 유닛 테스트와 통합 테스트를 실행하고 결과를 수집할 수 있습니다.
Q2: Fastlane에서 테스트를 실행하려면 어떻게 설정해야 하나요?
Fastlane의 `Fastfile`에 `scan` 액션을 추가합니다. 예를 들어, 유닛 테스트와 통합 테스트가 하나의 스킴(scheme)에 포함되어 있다면 다음과 같이 작성합니다.
```ruby
lane :test do
scan(scheme: "YourAppScheme")
end
```
만약 테스트가 별도의 스킴으로 분리되어 있다면 각 스킴에 대해 별도의 `scan`을 실행할 수도 있습니다.
Q3: 자동 배포 파이프라인에서 테스트 실패 시 배포를 중단하려면 어떻게 하나요?
`scan` 실행 중 테스트가 실패하면 Fastlane은 기본적으로 에러를 발생시키고 프로세스를 중단합니다. 따라서 별도의 추가 설정 없이 테스트 실패 시 배포가 중단됩니다.
Q4: 통합 테스트(예: UI 테스트)를 포함하려면 어떻게 해야 하나요?
통합 테스트가 포함된 스킴을 지정하거나, `scan`에서 특정 테스트 타겟을 지정할 수 있습니다. 예를 들어:
```ruby
scan(
scheme: "YourIntegrationTestScheme",
only_testing: ["YourIntegrationTestTarget"]
)
```
Q5: 테스트 결과를 보고서로 출력하거나 외부 서비스에 업로드할 수 있나요?
예, `scan`에서 `output_directory`, `output_types` 옵션을 이용해 테스트 결과를 HTML, JUnit XML 등 다양한 형식으로 저장할 수 있습니다. 저장한 결과를 Fastlane의 `slack` 액션 등과 연동해 알림을 보내거나 CI 서버에 업로드할 수 있습니다.
```ruby
scan(
scheme: "YourAppScheme",
output_types: "junit"
)
```
Q6: Fastlane과 CI 도구(예: Jenkins, GitHub Actions)에서 테스트 자동화는 어떻게 연동하나요?
CI 설정 파일에서 Fastlane 명령어 `fastlane test`를 실행하도록 구성합니다. Fastlane이 테스트를 실행하고 실패 시 빌드도 실패하게 하여 배포 전에 반드시 테스트를 통과하게 할 수 있습니다.
Q7: 유닛 테스트와 통합 테스트를 별도 단계로 실행하려면?
Fastlane에서 각각 별도의 lane으로 분리하고, 배포 전에 두 lane을 순차 실행할 수 있습니다.
```ruby
lane :unit_test do
scan(scheme: "UnitTestScheme")
end
lane :integration_test do
scan(scheme: "IntegrationTestScheme")
end
lane :deploy do
unit_test
integration_test
배포 작업 수행
end
```
---
요약하자면, Fastlane에서 `scan` 액션을 활용하여 유닛 테스트와 통합 테스트를 자동으로 실행하고, 실패 시 배포를 중단할 수 있으며, 테스트 결과도 다양한 형식으로 관리 가능합니다. 이를 CI와 연계하면 신뢰성 높은 자동 배포 프로세스를 구현할 수 있습니다.
아래는 Fastlane을 사용하여 유닛 테스트와 통합 테스트를 구현하는 방법에 대한 단계별 가이드입니다.
1. Fastlane 설치 및 설정 Fastlane이 설치되어 있지 않다면, 먼저 설치합니다.
이후 Fastlane을 초기화하고 필요한 환경을 설정합니다.
```bash Fastlane 설치 sudo gem install fastlane -NV Fastlane 초기화 cd your_project_directory fastlane init ```
2. Fastfile 구성 `Fastfile`을 열어 테스트를 실행할 lane을 정의합니다.
예를 들어, iOS 프로젝트의 경우 Xcode의 XCTest를 사용할 수 있습니다.
유닛 테스트 실행 유닛 테스트를 실행하기 위한 lane을 추가합니다: ```ruby lane :run_unit_tests do Xcode 프로젝트에서 유닛 테스트 실행 scan( scheme: "YourAppScheme", device: "iPhone 13", clean: true ) end ``` 통합 테스트 실행 통합 테스트 또한 `scan`을 사용하여 실행할 수 있습니다.
통합 테스트를 위한 lane을 추가합니다: ```ruby lane :run_integration_tests do scan( scheme: "YourAppUITestsScheme", device: "iPhone 13", clean: true ) end ```
3. 테스트 결과 리포트 Fastlane은 테스트 결과를 수집하여 리포트를 생성하는 기능도 지원합니다.
원하는 경우, `scan`의 옵션을 사용하여 JUnit 호환 형식으로 리포트를 생성할 수 있습니다.
```ruby scan( scheme: "YourAppScheme", output_directory: "reports", output_types: "html,junit" ) ```
4. CI/CD 통합 Fastlane을 CI/CD 시스템 (예: GitHub Actions, Jenkins, CircleCI 등)과 통합하여 코드가 푸시될 때마다 자동으로 테스트가 실행되도록 설정할 수 있습니다.
예를 들어, GitHub Actions를 사용하는 경우 `.github/workflows/ci.yml` 파일을 생성하고 아래와 같이 구성할 수 있습니다: ```yaml name: CI on: push: branches: - main jobs: build: runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version:
2.7 - name: Install Fastlane run: | gem install fastlane - name: Run Unit Tests run: fastlane run_unit_tests - name: Run Integration Tests run: fastlane run_integration_tests ```
5. 배포 및 알림 설정 테스트가 성공적으로 완료되면, 다음 단계로 배포를 자동화하거나 슬랙, 이메일 등의 채널을 통해 알림을 설정할 수 있습니다.
```ruby lane :deploy do 테스트 실행 run_unit_tests run_integration_tests 테스트 성공 시 배포 수행 deliver( force: true, skip_screenshots: true ) end ``` 결론 Fastlane을 사용하면 유닛 테스트 및 통합 테스트를 쉽게 설정하고 자동화할 수 있습니다.
CI/CD와 통합하면 소프트웨어 개발 프로세스의 품질을 높이고, 코드 변경 시마다 자동으로 테스트를 실행하여 버그를 조기에 발견하는 데 큰 도움이 됩니다.
작성자:
이시윤 [비회원]
| 작성일자: 1년 전
2025-04-15 23:40:54
조회수: 117 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 117 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.