Необходимо ли резюме в методе модульного тестирования

Поскольку название метода модульного тестирования делает его назначение более значимым, необходимо ли добавлять сводку к методу модульного тестирования?

Пример:

/// <summary>
/// Check the FormatException should be thrown when a give country data line contains a invalid number.
/// </summary>
[TestMethod]
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber()
{
  ...
}

person Ji Yalin    schedule 14.09.2009    source источник
comment
Кто-нибудь еще видит странный ответ Скита, а затем почти сразу же удаляет его?   -  person    schedule 14.09.2009
comment
@Will - да, я тоже это заметил.   -  person Drew Noakes    schedule 14.09.2009
comment
Мы разработчики. Замечать странные вещи вне шаблона — вот как работает наш мозг :)   -  person DVK    schedule 14.09.2009
comment
Нет ничего необычного в том, чтобы опубликовать ответ, понять, что вы неправильно прочитали вопрос, и удалить его.   -  person RichardOD    schedule 14.09.2009
comment
Мы говорим о Ските. Он ходит идеально. И, честно говоря, вы должны быть забанены за то, что думаете, что он человек. Парень - T10k, и он вырвет тебе позвоночник, когда выследит тебя.   -  person    schedule 14.09.2009


Ответы (8)


Я думаю, что длинное описательное имя важнее, чем XML-комментарий. Поскольку модульный тест не будет частью API, вам не нужен комментарий XML.

Например:

[TestMethod]
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber()
{
  ...
}

более полезен, чем:

///<summary>
/// Exception Should Thrown When Parse CountryLine Containing InvalidNumber
///</summary>
[TestMethod]
public void Test42()
{
  ...
}

XML-комментарии следует использовать для документирования API и фреймворков.

person jrcs3    schedule 14.09.2009
comment
+1 от меня. Также я никогда не видел документации по модульным тестам. Если код хорошо составлен, он должен быть самоописывающим. Это типично, если вы используете составные методы — c2.com/ppr/wiki/WikiPagesAboutRefactoring/ComposedMethod. .html - person RichardOD; 14.09.2009

На самом деле я предпочитаю использовать DescriptionAttribute вместо сводного тега. Причина в том, что значение атрибута Description будет отображаться в файле результатов. Это упрощает понимание сбоев, когда вы просто смотрите на файл журнала.

[TestMethod,Description("Ensure feature X doesn't regress Y")]
public void TestFeatureX42() {
  ..
}
person JaredPar    schedule 14.09.2009
comment
+1 От меня тоже. Соглашение об именах методов должно соблюдаться для всех проектов, в том числе и для тестовых — какой разумный смысл ставить краткую информацию или описание в названии метода, а не в местах, предназначенных для хранения таких данных? - person Spook; 17.10.2012
comment
Можете ли вы прокомментировать, как в настоящее время обозреватель тестов интегрируется с атрибутом Description? Я знаю, что этот пост устарел, но я никогда не знал, что для тестов существует отдельный атрибут описания, и сразу же добавил его, чтобы посмотреть, как он выглядит. К моему удивлению, я нигде его не видел. Была ли функция удалена (в таком случае, не будет ли атрибут объявлен устаревшим?) или я что-то упустил? - person julealgon; 20.08.2014
comment
@julealgon Это действительно так, по крайней мере, в VS 2015. DescriptionAttribute нигде не отображается в среде IDE, даже если тестовый запуск завершился неудачно. Мне нужно проверить, достаточно ли любезен консольный регистратор VSTest.Console, чтобы выводить его на консоль, по крайней мере, для неудачных тестов. - person Tanveer Badar; 21.01.2016
comment
@TanveerBadar Для меня это настоящее разочарование, можно подумать, что они добавят что-то подобное в обозреватель решений. Я не единственный один с этой проблемой... - person David Rogers; 20.07.2016
comment
Та же проблема с Visual Studio 2017. Атрибут описания бесполезен. - person George Chakhidze; 24.10.2018

Лично я стараюсь сделать тесты достаточно простыми, чтобы документация была избыточной. Я использую встроенные комментарии в тестовом методе, чтобы объяснить почему я делаю что-то определенным образом, а не что я делаю.

person Drew Noakes    schedule 14.09.2009

Необходимо добавить сводку, когда сводка может предоставить больше информации, которая может/должна быть закодирована в имени метода. Обратите внимание, что когда я говорю «необходимо», имея в виду какую-либо документацию, я имею в виду «необходимо передать 100% необходимого контекста/деталей/нюансов новому кодеру, унаследовавшему проект, или вам самому через 5 лет».

person DVK    schedule 14.09.2009

Не обязательно, но если вы чувствуете, что комментарии XML добавляют ценность помимо названия самого модульного теста (которое выглядит всеобъемлющим), то вы окажете услугу другим разработчикам.

Если сводка по сути является прямым дубликатом имени метода модульного тестирования, то я думаю, что это излишество.

person David Andres    schedule 14.09.2009

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

Общее эмпирическое правило заключается в том, что в коде говорится, что вы делаете, а в комментарии объясняется, почему, но, поскольку имя очень подробное (что, я думаю, нормально, поскольку никто никогда не должен его набирать), я не думаю, что комментарий способствует чему-либо.

person Erik Edin    schedule 14.09.2009

Комментарий XML совершенно не нужен, если у вас есть описательное имя метода. И это обязательно для методов модульного тестирования.

Вы уже на правильном пути, имея описательное название метода тестирования. (Многие практики agile и TDD считают, что метод тестирования должен включать «следует», например, как показано в текст ссылки на этот пост в блоге.

Лично мне нравятся такие имена методов:

MyClass_OnInvalidInput_ShouldThrowFormatException()

Но это всего лишь мои личные предпочтения.

person azheglov    schedule 14.09.2009

Если вы думаете, что это лучшее использование вашего времени, сделайте это, в противном случае не делайте этого. я бы не стал.

person erikkallen    schedule 14.09.2009