나는 최근에 설명을 극대화하기 위해 테스트, 클래스 및 프로젝트를 명명하는 다음과 같은 규칙을 생각해 냈습니다.
네임 스페이스 Settings
의 프로젝트에서 클래스를 테스트한다고 가정 해 MyApp.Serialization
보겠습니다.
먼저 MyApp.Serialization.Tests
네임 스페이스를 사용하여 테스트 프로젝트를 만듭니다 .
이 프로젝트와 물론 네임 스페이스에서 IfSettings
( IfSettings.cs로 저장 됨 ) 라는 클래스를 만듭니다 .
SaveStrings()
방법을 테스트한다고 가정 해 봅시다 . -> 테스트 이름을 지정합니다 CanSaveStrings()
.
이 테스트를 실행하면 다음과 같은 제목이 표시됩니다.
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
나는 이것이 테스트하고있는 것을 나에게 잘 알려 준다고 생각한다.
물론 영어에서 명사 "Tests"는 동사 "tests"와 같은 것이 유용합니다.
시험의 이름을 정할 때 창의력에는 제한이 없으므로 시험에 대한 완전한 문장 제목을 얻습니다.
일반적으로 테스트 이름은 동사로 시작해야합니다.
예를 들면 다음과 같습니다.
- 감지 (예
DetectsInvalidUserInput
)
- 예외 (예
ThrowsOnNotFound
)
- 윌 (예
WillCloseTheDatabaseAfterTheTransaction
)
기타
다른 옵션은 "if"대신 "that"을 사용하는 것입니다.
후자는 나를 불구하고 키 입력과 내가 알고하지 않기 때문에, 뭐하는 거지 더 정확히 설명 저장 하는 테스트 동작이 존재하지만 테스트입니다 경우 가 있습니다.
[ 편집 ]
위의 명명 규칙을 조금 더 오래 사용한 후에 인터페이스를 사용할 때 If 접두사가 혼동 될 수 있음 을 알았습니다 . 테스트 클래스 IfSerializer.cs 는 "파일 열기 탭"의 ISerializer.cs 인터페이스와 매우 유사하게 나타납니다 . 이것은 테스트, 테스트중인 클래스 및 인터페이스 사이를 전환 할 때 매우 성 가실 수 있습니다. 결과적으로 접두사로 That over If 를 선택 합니다.
또한 이제 다른 곳에서는 모범 사례로 간주되지 않으므로 테스트 클래스의 메소드에만 사용합니다. 테스트 메소드 이름에서 단어를 다음과 같이 구분하는 "_":
[Test] public void detects_invalid_User_Input()
나는 이것을 더 읽기 쉽다는 것을 안다.
[ 편집 종료 ]
테스트가 무엇을하고 있는지 이해하는 데 많은 시간을 절약 할 수 있기 때문에 중요한 이름 지정 테스트를 고려하기 때문에 이것이 더 많은 아이디어를 낳기를 바랍니다. .