[swift] Quick/Nimble과 GitLab를 함께 사용하기

GitLab은 협업을 위한 뛰어난 기능을 제공하는 웹 기반 Git 저장소 관리 도구입니다. Swift 개발자라면 GitLab을 사용하여 프로젝트를 관리하고 협업할 수 있습니다. 이번 글에서는 GitLab과 Swift의 유닛 테스트 프레임워크인 Quick과 Nimble을 함께 사용하는 방법에 대해 알아보겠습니다.

1. Quick/Nimble 소개

Quick은 Swift의 BDD(Behavior-driven Development) 스타일의 유닛 테스트 프레임워크입니다. Quick은 간결하고 가독성이 좋은 문법을 제공하여 테스트 코드를 작성하는 것을 쉽게 만들어줍니다.

Nimble은 Quick과 함께 사용되는 매처(matcher) 프레임워크로, 테스트의 기대값과 실제 결과를 비교하는 것을 쉽게 만들어줍니다. Nimble을 사용하면 테스트 코드가 더욱 읽기 쉽고 표현력 있게 작성됩니다.

2. GitLab과 Quick/Nimble 설정

GitLab을 사용하기 위해서는 GitLab 계정이 필요합니다. 계정이 있다면 GitLab 웹사이트에 접속하여 새 프로젝트를 생성합니다. 이 프로젝트는 Swift 프로젝트를 관리하는 데 사용될 것입니다.

프로젝트를 생성한 후 로컬 환경에서 Swift 프로젝트를 초기화합니다. Swift Package Manager를 사용하여 Quick과 Nimble을 종속성으로 추가합니다. Package.swift 파일을 열어 다음과 같이 의존성을 추가합니다.

// Package.swift
// ...

let package = Package(
    // ...
    dependencies: [
        .package(url: "https://github.com/Quick/Quick.git", from: "2.2.0"),
        .package(url: "https://github.com/Quick/Nimble.git", from: "8.0.0"),
    ],
    targets: [
        .testTarget(
            name: "MyProjectTests",
            dependencies: ["Quick", "Nimble"],
            path: "Tests"
        ),
    ]
)

의존성을 추가한 후, 터미널에서 다음 명령어를 실행하여 종속성을 설치합니다.

$ swift package resolve

이제 테스트 코드를 작성할 준비가 되었습니다.

3. Quick/Nimble을 사용한 테스트 코드 작성

테스트 코드를 작성하기 위해 Tests 디렉토리를 만들고, 그 안에 MyProjectTests.swift 파일을 생성합니다. 이 파일에 테스트를 작성합니다.

// MyProjectTests.swift
import Quick
import Nimble
@testable import MyProject

class MyProjectSpec: QuickSpec {
    override func spec() {
        describe("MyProject") {
            var myProject: MyProject!

            beforeEach {
                myProject = MyProject()
            }

            it("should do something") {
                expect(myProject.doSomething()).to(equal("expected result"))
            }

            // 여기에 추가적인 테스트를 작성할 수 있습니다.
            // ...
        }
    }
}

위의 코드는 MyProject 클래스를 테스트하는 예시입니다. MyProject 클래스가 있는 프로젝트에 맞게 테스트 메소드를 작성합니다. describe 블록은 테스트 스위트를 정의하고, it 블록은 개별 테스트를 정의합니다. expect 문을 사용하여 기대값과 실제 결과를 비교할 수 있습니다.

4. GitLab CI/CD 설정

GitLab에서 지원하는 CI/CD를 사용하여 테스트를 자동화할 수 있습니다. 프로젝트 루트 디렉토리에 .gitlab-ci.yml 파일을 생성하고, 다음과 같이 설정합니다.

# .gitlab-ci.yml
image: swift:5.3

stages:
  - test

test:
  stage: test
  script:
    - swift build
    - swift test

위의 설정은 Swift 5.3 이미지를 사용하여 테스트를 진행합니다. test 스테이지에서는 빌드 후 테스트를 수행합니다.

이제 테스트 코드를 커밋하고 GitLab에 푸시하면 CI/CD 파이프라인이 실행되어 테스트가 자동으로 수행됩니다.

5. 결론

이 글에서는 GitLab과 Swift의 유닛 테스트 프레임워크인 Quick과 Nimble을 함께 사용하는 방법을 살펴보았습니다. GitLab의 협업 기능과 Quick/Nimble의 테스트 프레임워크를 통해 프로젝트의 품질을 개선하고 코드를 안정적으로 유지할 수 있습니다.

더 자세한 내용은 Quick과 Nimble의 공식 문서를 참조하시기 바랍니다.