Комментарий

Comment — тип данных отвечающий за комментарии в тестах.

Данный тип данных используется для добавления информации о тесте, объяснении того, как именно работает сложный тест. А быть может, ты хочешь предоставить детали, которые могут быть полезны при диагностике проблемы, специфичные для этого теста.

note

Комментарий необходим для указания полезной информацией о тесте или типе данных.

Отличие от обычного комментария

Да, предполагаю что ты и так знаешь, как добавить комментарий к исходному коду в Swift. В отличии от обычного комментария, комментарий добавленный к тесту укажет на проблему быстрее. Причина очень проста — если тест не пройдет проверку, ты увидишь комментарий связанный с этим тестом. Это особенно полезно при использовании инструментов CI/CD или в других логах.

Комментарий добавляется выше атрибутов @Test или @Suite.

Использование

Чтобы добавить комментарий, используй 2 слеша // перед атрибутом @Test или @Suite:

// Проверям предложения на рынке и ищем только 2-комнатную квартиру
@Test
func availableApartment() async {
	let roomForOne = ApartmentSearcher(criteria: [.single, .studio])
	let result = await roomForOne.result()

	#expect(result.contains { $0.type == .twoBedroom })
}

❌ Test availableApartment() failed after 0.001 seconds with 1 issue.
↳ // Проверям апартаменты и ищем только 2-комнатную квартиру

Одиночный комментарий // Проверям апартаменты и ищем только 2-комнатную квартиру добавлен к тесту. Тест не прошел проверку, поэтому помимо названия теста в консоли, ты видишь дополнительную информацию о нем.

Еще одной особенностью является применение комментария к типам данных. Без атрибута @Suite блочный комментарий не учитывается в выводе консоли:

/*
 Максимально оптимизированный поиск по рынкам РФ и РБ.
 Без дополнительных фильтров.
*/
struct FastApartmentSearcher {
	// ...
}

❌ Suite FastApartmentSearcher failed after 0.001 seconds with 1 issue.

Комментарий выше не был напечатан, но если ты применишь атрибут @Suite, то вывод станет доступен:

/*
 Максимально оптимизированный поиск по рынкам РФ и РБ.
 Без дополнительных фильтров.
*/
@Suite
struct FastApartmentSearcher {
	// ...
}

// ❌ Suite FastApartmentSearcher failed after 0.001 seconds with 1 issue.
/*
↳ Максимально оптимизированный поиск по рынкам РФ и РБ.
Без дополнительных фильтров.
*/

Помимо этого атрибуты @Test и @Suite поддерживают другие стили, кроме одиночного:

СинтаксисОписание
// ...Комментарий в одну строку
/// ...Документация в одну строку
/* ... */Комментарий в блоке
/** ... */Документация в блоке

Различие между комментарием и именем теста

Рассмотрим 2 примера. В первом случае зададим имя для теста:

@Test("Проверям предложения на рынке и ищем только 2-комнатную квартиру")
func availableApartment() async {
	// ...
}

❌ Test "Проверям предложения на рынке и ищем только 2-комнатную квартиру" failed after 0.001 seconds with 1 issue.

Во втором случае, имя теста не задано, но указан комментарий:

// Проверям предложения на рынке и ищем только 2-комнатную квартиру
@Test
func availableApartment() async {
	// ...
}

❌ Test availableApartment() failed after 0.001 seconds with 1 issue
↳ Проверям апартаменты и ищем только 2-комнатную квартиру

Как ты видишь, в консоли или твоем CI/CD вывод будет различаться, поскольку имя теста и комментарий служат для различных целей. Я не стал указывать третий случай: имя и комментарий вместе, поскольку разница будет и так понятна.

important

В навигационном меню тестов Xcode отображается только имя теста, а не его комментарий.