[swift] Quick/Nimble과 Jenkins를 사용한 지속적인 인티그레이션 테스트 작성 방법

지속적인 인티그레이션(CI)는 소프트웨어 개발 프로세스의 중요한 부분이며, 테스트 자동화는 이를 성공적으로 수행하는 데 필요한 요소입니다. 이번 블로그 포스트에서는 Swift 개발에 사용되는 Quick/Nimble 프레임워크와 Jenkins를 활용한 CI 테스트 작성 방법에 대해 알아보겠습니다.

Quick/Nimble 소개

Quick은 Swift 언어용 BDD(Behavior-Driven Development) 프레임워크로, 직관적이고 가독성 좋은 테스트 코드 작성을 지원합니다. Nimble은 Quick과 함께 사용되는 매치어(matcher) 라이브러리로, 테스트 결과를 동적으로 비교하고 확인할 수 있습니다.

Jenkins 소개

Jenkins는 지속적인 통합을 위한 자동화 서버입니다. 소스 코드 변경 감지, 빌드, 테스트, 배포 등의 작업을 자동으로 수행하여 개발자들이 안정적인 환경에서 작업할 수 있도록 지원합니다.

Quick/Nimble과 Jenkins를 함께 사용하기

  1. Jenkins 설치 및 설정

    Jenkins를 사용하기 위해 먼저 Jenkins를 설치하고 구성해야 합니다. 자세한 설치 및 설정 방법은 Jenkins 공식 문서를 참조하시기 바랍니다.

  2. 프로젝트 설정

    Jenkins 대시보드에서 새로운 프로젝트를 생성하고, Git 또는 다른 소스 코드 저장소와의 연결을 설정합니다. 이후 다음 단계에서 사용할 수 있는 환경을 구성합니다.

  3. Jenkins 플러그인 설치

    Quick/Nimble과 Jenkins를 함께 사용하기 위해 Jenkins 플러그인을 설치해야 합니다. Jenkins 대시보드에서 “플러그인 관리”로 이동하고, 다음 두 가지 플러그인을 설치합니다.

    • xcode-plugin: Xcode 프로젝트의 빌드와 관련된 작업을 수행합니다.
    • xcode-invoker-plugin: Xcode 테스트 환경을 관리하고 실행합니다.
  4. 테스트 코드 작성

    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인지를 검증하는 테스트 코드입니다.

  5. Jenkins Job 설정

    Jenkins 프로젝트 설정에서 “빌드 환경” 섹션에 해당하는 부분을 수정하여 Quick/Nimble 테스트를 실행하는 명령어를 추가합니다. 예를 들어, 다음 스크립트를 추가할 수 있습니다.

    xcodebuild test -scheme MyScheme -destination "platform=iOS Simulator,name=iPhone 12 Pro Max"
    

    위의 예시에서는 MyScheme으로 지정된 스킴을 사용하여 iPhone 12 Pro Max 시뮬레이터에서 테스트를 실행하는 명령어입니다. 자신의 프로젝트에 맞게 스킴과 시뮬레이터를 설정해주어야 합니다.

  6. Jenkins 빌드 실행

    Jenkins 대시보드에서 생성한 프로젝트로 이동하여 “빌드 시작”을 클릭하여 테스트를 실행합니다. Jenkins는 소스 코드 변경을 감지하고 CI 작업을 자동으로 수행합니다.

결론

이번 블로그 포스트에서는 Quick/Nimble과 Jenkins를 함께 사용하여 지속적인 인티그레이션 테스트 작성 방법을 알아보았습니다. Quick/Nimble을 사용하면 직관적이고 가독성 좋은 테스트 코드를 작성할 수 있고, Jenkins를 사용하면 CI 작업을 자동화하여 안정적인 환경에서 개발할 수 있습니다. 이러한 도구들을 적절히 활용하여 개발 프로세스를 개선하고 효율적인 코드 개발을 이루어내기를 바랍니다.

참고 자료