티스토리 뷰

테스트 코드를 작성하다 보면 기존 convention과 다른 방법으로 코드를 작성하게 될 때가 있다. 그중 메서드명을 한글로 작성하는 것snake_case로 작성하는 것이 대표적이다.

이렇게 작성했을 경우 JetBrains 툴에서는 잘못된 코드라고 지적질을 하게 된다. 여기서는 적어도 테스트 코드에서는 이러한 convention을 무시하게 하는 방법을 알아본다.

왜 테스트 메서드명을 한글로 쓰나

먼저 왜 이런 요구가 생기는지 짚고 가자.

// 영문 camelCase
public function testUserCannotWithdrawWhenBalanceIsInsufficient()

// 한글
public function 잔액이_부족하면_출금할_수_없다()

테스트 코드는 실행되는 문서에 가깝다. 나중에 테스트가 실패했을 때 메서드명만 보고 "무엇이 깨졌는지" 즉시 이해할 수 있어야 한다. 한글로 쓰면 그 목적에 훨씬 잘 맞는다.

프로덕션 코드는 영문 컨벤션을 지키되, 테스트 코드에만 예외를 두는 팀이 많은 이유다.

1. snake_case 경고 무시하기

PhpStorm은 메서드명이 camelCase가 아니면 밑줄로 경고를 표시한다.

Settings > Editor > Inspections
→ PHP > Code Style > Method name violates naming convention
→ 해당 항목 체크 해제

전체를 끄는 게 부담스러우면 스코프를 테스트 디렉터리로 한정할 수 있다. 인스펙션 항목 우측의 In All Scopes를 눌러 스코프를 추가한다.

# 스코프 패턴 예시
file:tests//*

이러면 프로덕션 코드에서는 경고가 그대로 뜨고 테스트에서만 무시된다. 이 방식이 가장 깔끔하다.

2. 한글 메서드명 경고(오타 검사) 없애기

한글을 쓰면 맞춤법 검사(Spelling)가 모르는 단어라며 물결 밑줄을 그린다.

Settings > Editor > Inspections
→ Proofreading > Typo
→ Process code 체크 해제

# 또는 한국어 사전 추가
Settings > Editor > Natural Languages > 한국어 활성화

개별 단어만 무시하려면 밑줄 위에서 Alt+EnterSave to dictionary 를 선택한다.

3. 코드에서 직접 억제하기

IDE 설정을 건드리지 않고 코드에 주석으로 표시하는 방법도 있다. 팀원 전체에게 적용된다는 게 장점이다.

/** @noinspection PhpMethodNamingConventionInspection */
public function 잔액이_부족하면_출금할_수_없다()
{
    // ...
}

클래스 전체에 적용하려면 클래스 선언 위에 붙인다.

/**
 * @noinspection PhpMethodNamingConventionInspection
 * @noinspection SpellCheckingInspection
 */
class WithdrawTest extends TestCase

4. 코드 스타일 규칙 자체를 수정

경고를 끄는 대신 규칙을 바꿀 수도 있다.

Settings > Editor > Code Style > PHP > Code Conversion
→ Naming conventions 탭에서 Method 패턴 수정

정규식을 유니코드 문자까지 허용하도록 바꾸면 한글 메서드명도 정상으로 인식된다.

PHPUnit이라면 attribute를 쓰는 방법도 있다

메서드명을 한글로 바꾸지 않고도 테스트 이름을 한글로 표시할 수 있다.

// PHPUnit 10+ (attribute)
#[Test]
#[TestDox('잔액이 부족하면 출금할 수 없다')]
public function cannotWithdrawWhenBalanceIsInsufficient()
{
    // ...
}

// PHPUnit 9 이하 (annotation)
/**
 * @test
 * @testdox 잔액이 부족하면 출금할 수 없다
 */
public function cannotWithdrawWhenBalanceIsInsufficient()
# 실행
phpunit --testdox

# 출력
 Withdraw
  ✔ 잔액이 부족하면 출금할 수 없다

이 방식은 메서드명은 컨벤션을 지키고 표시만 한글로 한다. IDE 경고도 안 나고 테스트 리포트도 읽기 좋다. 개인적으로는 이쪽을 더 선호한다.

Pest를 쓴다면 애초에 이런 고민이 없다.

it('잔액이 부족하면 출금할 수 없다', function () {
    // ...
});

설정을 팀과 공유하기

IDE 설정을 각자 하면 사람마다 환경이 달라진다. PhpStorm은 프로젝트 단위로 설정을 공유할 수 있다.

# 프로젝트에 커밋되는 설정 파일
.idea/inspectionProfiles/Project_Default.xml
.idea/codeStyles/Project.xml

이 두 파일을 gitignore에서 제외하고 커밋하면 팀원 전체가 같은 인스펙션·스타일 설정을 쓰게 된다. .idea 전체를 무시하되 이 파일들만 예외로 두는 방식이 일반적이다.

# .gitignore
.idea/*
!.idea/codeStyles/
!.idea/inspectionProfiles/

정리

  • 메서드명 경고는 Method name violates naming convention 인스펙션
  • 전체를 끄지 말고 스코프를 tests//* 로 한정
  • 한글 밑줄은 Typo 인스펙션의 Process code 해제
  • 코드에 @noinspection 주석으로 개별 억제 가능
  • 메서드명은 영문, 표시만 한글로 하려면 @testdox 또는 #[TestDox]
  • 인스펙션 설정은 .idea/inspectionProfiles 커밋으로 팀 공유

'개발' 카테고리의 다른 글

헷갈리는 오름차순 내림차순 (ASC, DESC) 평생 안 잊는 방법  (0) 2022.09.02
깃 alias  (0) 2021.11.16
The Tweleve Factor APP ( 12 Factor )  (0) 2021.03.19
nGrinder 란 무엇인가 ? (사용 후기)  (0) 2020.12.29
초기설정  (0) 2020.12.07
댓글


최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday