Про именования в авто-тестах

Хорошее именование тестовых классов, методов и юзер-степов (если вы используете степовый фреймворк типа thucydides) важно по двум причинам. Во-первых, этот код должен быть понятен любому, кто его читает, без глубокого погружения в контекст. Во-вторых, если вы используете степовый фреймворк – названия классов, методов и степов фигурируют в отчёте.

Именно поэтому нужно избегать слов correct, verify, valid, check и других их синонимов и вариаций при написании тестов. Давайте посмотрим на пример junit-теста:

public class ValidUserInfo {
	@Test
	public void correctUserEmail() {
		user.login();
		user.opensPersonalInfoPage();
		user.shouldSeeCorrectEmail();
	}
}

Начнём с класса – ValidUserInfo. Какой смысл несёт слово valid? Никакого, ведь тест для того и пишется, чтобы проверить валидность, корректность определённого функционала. То же самое касается и метода correctUserEmail – слово correct можно убрать и ничего не изменится.

Остался степ shouldSeeCorrectEmail. Слово correct и здесь не несёт никакой смысловой нагрузки, а только прячет от нас детали проверки, заставляя углубляться в контекст при разборе кода. Согласитесь, что запись shouldSeeEmail(“me@yandex.ru”) намного нагляднее? В ней сразу видно и что мы проверяем, и ожидаемый результат.

Поэтому слова correct, verify, valid, check – мусор, который засоряет ваш код и отчёты. От них нужно избавляться и взять за правило их больше не использовать.

comments powered by Disqus