💻

Tuist 기존 프로젝트에 테스트 타겟 추가

joho2022 2024. 12. 6. 04:55

Tuist에

들어가기 앞서

클린 아키텍처와 모듈화에 노력을 기울였던 이유는 더 나은 구조와 유지보수를 위한 갈망이 있었습니다.

하지만 구현에 집중하다 보니 테스트가 부족했던 점이 아쉬웠고,

그로 인해 도메인 테스트의 필요성을 강하게 느끼게 되었습니다.

 

 

테스트 타겟 설정

 

Tuist 기존 프로젝트에 테스트 타겟이 없는 경우,

테스트 타겟을 추가하는 방법을 정리하고자 합니다.

 

https://docs.tuist.dev/ko/references/project-description/structs/target#properties

 

What is Tuist? | Tuist

 

docs.tuist.dev

타겟의 속성은 위에 내용이 정리되어 있습니다.

 

추가하는 방법은 정말 간단한데요

 

해당 Project.swift에서 기존 모듈에 대한 테스트 타겟을 정의하면 끝입니다.

import ProjectDescription

let project = Project(
    name: "Domain",
    targets: [
        .target(
            name: "Domain",
            destinations: .iOS,
            product: .staticLibrary,
            bundleId: "io.tuist.Domain",
            deploymentTargets: .iOS("17.5"),
            sources: "Sources/**",
            dependencies: [
                .external(name: "RxSwift")
            ]
        ),
        
        .target(
            name: "DomainTests",
            destinations: .iOS,
            product: .unitTests,
            bundleId: "io.tuist.DomainTests",
            deploymentTargets: .iOS("17.5"),
            sources: ["Tests/**"],
            dependencies: [
                .target(name: "Domain")
            ]
        )
    ]
)

다음과 같이 정의하고 생성하면

당연히 에러가 발생하는데요.

 

그것은 경로부분에 저는 명시적으로 Tests 하위에 생성되기를 의도하는데

Tests 디렉토리가 없기 때문입니다.

 

현재 작업 디렉토리를 정확히 살펴보고 난 뒤, 명령어를 입력합니다.

 

>mkdir Domain/Sources Domain/Tests

다음과 같은 명령어를 사용하면

새로운 디렉토리를 생성되게 됩니다.

 

중간에 -p를 넣게 되면, 디렉토리가 없다면 자동으로 생성되도록 하는 것입니다.

 

그 다음에

 

>touch Domain/Tests/DomainTests.swift

import Testing

struct DomainTests {

    @Test func example() async throws {
        // Write your test here and use APIs like `#expect(...)` to check expected conditions.
        #expect(true)
    }

}

다음과 같은 내용을 넣고 수동으로 파일을 생성하였습니다.

 

저는 타겟설정하면 자동으로 생성되는 줄 알았는데,

초기 프로젝트 설정인 tuist init 만 기본 파일을 제공되고

이후 생성되는 파일은 개발자가 직접 추가해야 한다는데, 

Tuist는 프로젝트 구조를 설정하고 관리하는 데 중점을 두는 것을 깜빡했습니다.

 

 

지금 처럼 수동으로 추가하거나,

Tuist scaffold 기능을 사용하여 반복되는 파일을 템플릿으로 활용하여 추가할 수 있다고 합니다.

 

 

 

tuist generate를 실행할 때, 터미널에서 현재 작업 디렉터리를 정확히 설정하는 것이 중요합니다.

 

그렇게 되면

 

DomainTests이 포함된 Domain을 스킴설정하고 

테스트 실행하면 정상적으로 동작하는 것을 확인할 수 있게 됩니다.