지속적인 인티그레이션(CI)는 소프트웨어 개발 프로세스의 중요한 부분이며, 테스트 자동화는 이를 성공적으로 수행하는 데 필요한 요소입니다. 이번 블로그 포스트에서는 Swift 개발에 사용되는 Quick/Nimble 프레임워크와 Jenkins를 활용한 CI 테스트 작성 방법에 대해 알아보겠습니다.
Quick/Nimble 소개
Quick은 Swift 언어용 BDD(Behavior-Driven Development) 프레임워크로, 직관적이고 가독성 좋은 테스트 코드 작성을 지원합니다. Nimble은 Quick과 함께 사용되는 매치어(matcher) 라이브러리로, 테스트 결과를 동적으로 비교하고 확인할 수 있습니다.
Jenkins 소개
Jenkins는 지속적인 통합을 위한 자동화 서버입니다. 소스 코드 변경 감지, 빌드, 테스트, 배포 등의 작업을 자동으로 수행하여 개발자들이 안정적인 환경에서 작업할 수 있도록 지원합니다.
Quick/Nimble과 Jenkins를 함께 사용하기
-
Jenkins 설치 및 설정
Jenkins를 사용하기 위해 먼저 Jenkins를 설치하고 구성해야 합니다. 자세한 설치 및 설정 방법은 Jenkins 공식 문서를 참조하시기 바랍니다.
-
프로젝트 설정
Jenkins 대시보드에서 새로운 프로젝트를 생성하고, Git 또는 다른 소스 코드 저장소와의 연결을 설정합니다. 이후 다음 단계에서 사용할 수 있는 환경을 구성합니다.
-
Jenkins 플러그인 설치
Quick/Nimble과 Jenkins를 함께 사용하기 위해 Jenkins 플러그인을 설치해야 합니다. Jenkins 대시보드에서 “플러그인 관리”로 이동하고, 다음 두 가지 플러그인을 설치합니다.
- xcode-plugin: Xcode 프로젝트의 빌드와 관련된 작업을 수행합니다.
- xcode-invoker-plugin: Xcode 테스트 환경을 관리하고 실행합니다.
-
테스트 코드 작성
Quick/Nimble을 사용하여 테스트 코드를 작성합니다. 예를 들어, 특정 함수의 동작을 테스트하는 코드는 다음과 같이 작성할 수 있습니다.
import Quick import Nimble class MySpec: QuickSpec { override func spec() { describe("My function") { it("should return true") { expect(myFunction()).to(beTrue()) } it("should have correct length") { let str = myFunction() expect(str.count).to(equal(10)) } } } }
위의 예시에서는
myFunction()
함수가 true를 반환하고 반환하는 문자열의 길이가 10인지를 검증하는 테스트 코드입니다. -
Jenkins Job 설정
Jenkins 프로젝트 설정에서 “빌드 환경” 섹션에 해당하는 부분을 수정하여 Quick/Nimble 테스트를 실행하는 명령어를 추가합니다. 예를 들어, 다음 스크립트를 추가할 수 있습니다.
xcodebuild test -scheme MyScheme -destination "platform=iOS Simulator,name=iPhone 12 Pro Max"
위의 예시에서는
MyScheme
으로 지정된 스킴을 사용하여 iPhone 12 Pro Max 시뮬레이터에서 테스트를 실행하는 명령어입니다. 자신의 프로젝트에 맞게 스킴과 시뮬레이터를 설정해주어야 합니다. -
Jenkins 빌드 실행
Jenkins 대시보드에서 생성한 프로젝트로 이동하여 “빌드 시작”을 클릭하여 테스트를 실행합니다. Jenkins는 소스 코드 변경을 감지하고 CI 작업을 자동으로 수행합니다.
결론
이번 블로그 포스트에서는 Quick/Nimble과 Jenkins를 함께 사용하여 지속적인 인티그레이션 테스트 작성 방법을 알아보았습니다. Quick/Nimble을 사용하면 직관적이고 가독성 좋은 테스트 코드를 작성할 수 있고, Jenkins를 사용하면 CI 작업을 자동화하여 안정적인 환경에서 개발할 수 있습니다. 이러한 도구들을 적절히 활용하여 개발 프로세스를 개선하고 효율적인 코드 개발을 이루어내기를 바랍니다.