My Test Naming Conventions: More Examples
Other’s Naming Convention | My Naming Convention |
---|---|
itShouldSetAccountToLoggedInWhen- PasswordMatches |
matchingPasswordLogsYouIn |
itShouldSetAccountToRevokedAfterThree- FailedLoginAttempts |
threeFailedLoginAttemptsRevokesYourAccount |
itShouldNotSetAccountLoggedInIf- PasswordDoesNotMatch |
nonMatchingPasswordDoesNotLogYouIn |
itShouldNotRevokeSecondAccountAfterTwo- FailedAttemptsFirstAccount |
failedLoginAttemptsOnOtherAccountsDoes- NotImpactMyAccount |
itShouldNowAllowConcurrentLogins | sameUserCannotLoginConcurrently |
itShouldThrowExceptionIfAccountNotFound | onlyUserWithExistingAccountCanLogin |
ItShouldNotBePossibleToLogIntoRevokedAccount | userWithRevokedAccountCannotLogin |
itShouldResetBackToInitialStateAfter- SuccessfulLogin |
successfulLoginResetsFailedAttemptCount |
So why do I prefer calling my test as nonMatchingPasswordDoesNotLogYouIn instead of itShouldSetAccountToLoggedInWhenPasswordMatches?
- I think the latter is focusing on implementation details versus focusing on the intent.
- One should write descriptive names, but the longer the name is, that much more difficult it is to read. I want to write my test names such that they are short and concise. Hence I think the whole itShould<> thing seems repetitive without adding much value.
More about my test naming convention here…