본문 바로가기
Blog/TIL

2025-02-20 (목)

by 코젼 2025. 2. 20.
728x90
반응형

📌 TIL (Today I Learned)

🚀 오늘의 핵심 정리

  1. Kotest AbstractProjectConfig는 프로젝트 전역 테스트 설정을 담당
  2. extensions()을 활용해 커스텀 확장 기능을 등록할 수 있음
  3. GitLab에서 authored와 committed가 다르게 표시되는 이유는 rebase, cherry-pick, amend 때문
  4. Kotlin에서 if와 let의 성능 차이는 거의 없지만, 일반적인 조건문(if)이 더 직관적
  5. Git에서 cherry-pick을 하면 author는 유지되지만 committer는 변경됨

🔹 1. Kotest의 AbstractProjectConfig

  • Kotest에서 전역 설정을 정의하는 추상 클래스
  • 테스트 실행 방식(병렬 실행, 실행 순서, 확장 기능 등)을 제어할 수 있음
  • beforeProject() 및 afterProject()를 활용하여 테스트 환경을 설정할 수 있음
object TestConfig : AbstractProjectConfig() {
    override val parallelism = 2  // 병렬 실행 개수
    override val testCaseOrder = TestCaseOrder.Random  // 랜덤 실행
    override suspend fun beforeProject() { /* 테스트 환경 초기화 */ }
    override suspend fun afterProject() { /* 테스트 후 정리 작업 */ }
}

🔹 2. Kotest 확장 기능 등록 (extensions())

  • AbstractProjectConfig에서 extensions()를 오버라이드하여 커스텀 확장 기능 추가 가능
  • 예를 들어, 테스트가 끝난 후 실행되는 로직을 정의한 AfterTestListenerConfig를 등록할 수 있음
object TestConfig : AbstractProjectConfig() {
    override fun extensions() = listOf(AfterTestListener)
}

🔹 3. GitLab에서 authored와 committed 차이

  • GitLab에서 "A authored ... and B committed ..."처럼 표시되는 이유:
    • Author (작성자) → 최초로 코드를 작성하고 커밋한 사람
    • Committer (커밋한 사람) → 최종적으로 GitLab에 반영한 사람
  • git rebase, git cherry-pick, git commit --amend 등을 수행하면 Committer가 변경될 수 있음

✅ 예시: git cherry-pick 후 로그 확인

git checkout main
git cherry-pick <commit-hash>
git push origin main

git log --pretty=fuller

commit abc1234
Author:     A <a@email.com>
Commit:     B <b@email.com>

→ Author는 A, Committer는 B로 기록됨 (GitLab에서도 동일하게 표시됨)

🔹 4. Kotlin 코드 스타일 및 최적화

  • if 문과 let 비교: 성능 차이는 거의 없지만, 불필요한 let 사용은 피하는 것이 좋음
  • 더 Kotlin스럽게 작성하는 방법:
    • takeIf를 활용하면 더 간결한 코드 작성 가능 (request.flag.takeIf { it }?.let {})
    • 하지만 일반적인 조건문(if)이 더 직관적이고 성능 면에서 유리할 때도 있음

✅ 예제 (가독성 좋은 코드 스타일)

if (request.flag) {
    service.execute()
}

✅ (대체 가능하지만 권장되지 않음)

request.flag.takeIf { it }?.let {
    service.execute()
}

🔹 5. Git 커밋 시 author와 committer가 달라지는 경우

작업 유형 author committer

일반 커밋 (git commit) A A
git rebase 후 푸시 A B
git cherry-pick 사용 A B
git commit --amend 사용 A B
git merge 수행 A B

👉 오늘도 한 걸음 성장했다! 🚀

728x90
반응형

'Blog > TIL' 카테고리의 다른 글

2024-02-24 (월)  (0) 2025.02.24
2025-02-21 (금)  (0) 2025.02.21
2025-02-19 (수)  (0) 2025.02.19
2025-02-18 (화)  (0) 2025.02.18
2025-02-17 (월)  (0) 2025.02.17

댓글