[swift] Quick/Nimble과 Slack을 함께 사용하기

소개

Swift 프로젝트를 개발하면서 테스트를 작성하는 것은 매우 중요합니다. 그 중에서도 Quick과 Nimble은 많은 개발자들에게 인기있는 테스트 프레임워크입니다. 이번에는 Quick/Nimble을 사용하여 테스트를 작성하고, 테스트 결과를 Slack에 알림으로 받는 방법에 대해 알아보겠습니다.

Quick/Nimble이란?

Slack 알림 설정하기

먼저 Slack에 알림을 받기 위해서는 Incoming Webhooks 기능을 사용해야 합니다.

  1. Slack 워크스페이스에서 “Apps”으로 이동합니다.
  2. “App Directory”에서 “Incoming Webhooks”를 검색하고 설치합니다.
  3. “Incoming Webhooks” App을 선택하고, “Add to Slack”을 클릭합니다.
  4. 알림을 받을 채널을 선택하고 “Add Incoming Webhooks Integration”을 클릭합니다.
  5. “Webhook URL”을 복사합니다.

Quick/Nimble 프로젝트에 Slack 연동하기

  1. Terminal을 열고 프로젝트 디렉토리로 이동합니다.
  2. 프로젝트에 swift-slack-sdk 패키지를 추가합니다.
.package(url: "https://github.com/SlackKit/SlackKit.git", from: "4.3.0"),
  1. Package.swift 파일에 패키지를 추가한 후, 종속성을 업데이트합니다.
import PackageDescription

let package = Package(
    name: "MyProject",
    dependencies: [
        .package(url: "https://github.com/SlackKit/SlackKit.git", from: "4.3.0"),
    ],
    targets: [
        .target(
            name: "MyProject",
            dependencies: ["SlackKit"]),
    ]
)
  1. ./Sources/MyProject 디렉토리에 SlackClient.swift 파일을 생성하고, 다음 코드를 작성합니다.
import SlackKit

class SlackClient {
    static let shared = SlackClient()
    
    let slack = SlackClient(apiToken: "YOUR_SLACK_API_TOKEN")
    
    func sendNotification(message: String) {
        slack.sendChatMessage(channel: "YOUR_SLACK_CHANNEL", text: message)
    }
}
  1. Quick/Nimble에서 테스트 결과를 Slack에 알림으로 보내기 위해 QuickConfiguration을 설정합니다.
import Quick
import Nimble

class QuickSpec: QuickSpec {
    
    override func spec() {
        beforeEach {
            // Slack 알림 전송
            SlackClient.shared.sendNotification(message: "Test started")
        }
        
        describe("Some tests") {
            it("should pass") {
                expect(true).to(beTrue())
            }
            
            it("should fail") {
                expect(false).to(beTrue())
            }
        }
        
        afterEach {
            // Slack 알림 전송
            SlackClient.shared.sendNotification(message: "Test finished")
        }
    }
}

QCKMain([QuickSpec.self])
  1. SlackClient의 YOUR_SLACK_API_TOKENYOUR_SLACK_CHANNEL을 해당하는 값으로 변경합니다.

결과 확인하기

위에서 설정한 Quick/Nimble 테스트를 실행하면, 각 테스트 전후에 해당하는 Slack 채널로 알림이 전송되는 것을 확인할 수 있습니다.

결론

이제 Quick/Nimble과 Slack을 연동하여 테스트 결과를 실시간으로 확인할 수 있습니다. 테스트 결과를 Slack으로 받으면 팀원들과 공유하고 신속하게 문제를 해결할 수 있어 개발 생산성을 높일 수 있습니다.