tag:blogger.com,1999:blog-8596733192274108952.post7799663898796492088..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: Параметризованные юнит-тесты в xUnitSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-8596733192274108952.post-86697141700104797582016-07-15T10:41:18.496+03:002016-07-15T10:41:18.496+03:00Хочу еще раз поблагодарить за объяснения про парам...Хочу еще раз поблагодарить за объяснения про параметризированные тесты. Пригодилось в проекте, в котором файлы данных для тестов шарятся с другими проектами.<br /><br />Правда выяснил заодно, что в NUnit обнаружение 60 тысяч тестов из через TestCaseSource тормозит просто адово (Mikhail Barghttps://www.blogger.com/profile/13610769544208096841noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-76417273682037323042016-05-09T18:48:46.751+03:002016-05-09T18:48:46.751+03:00Понял, спасибо!Понял, спасибо!Mikhail Barghttps://www.blogger.com/profile/13610769544208096841noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-36946543888019423562016-05-09T18:40:12.390+03:002016-05-09T18:40:12.390+03:00Михаил, в случае параметризованного теста мы эконо...Михаил, в случае параметризованного теста мы экономим 3 строки, плюс время, затраченное на вразумительное именование, которое станет весьма важным, когда число сценариев для одного теста станет больше 5.<br /><br />По поводу отладки: вызов отладки также тривиален в случае с параметризованными тестами, поскольку в результате тестовый фреймворк просто генерирует два теста и они четко видны в Test Expolrer-е: посмотрите на скриншот со студии, который я привожу в посте. Там просто каждая строка для каждого параметризованного кейса и их можно отлаживать и запускать независимо.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-24329906007458583042016-05-09T15:35:58.199+03:002016-05-09T15:35:58.199+03:00Хотел бы задать немного нелепый вопрос, о котором ...Хотел бы задать немного нелепый вопрос, о котором думаю еще со времени предыдущего поста (в нем было про отсутствие параметризированных тестов в ms test).<br /><br />Так вот, а в чем собственно выигрыш от параметризированных тестов по сравнению с явным вызовом? Т.е. чем лучше<br /><br />[InlineData("s1", "S1", true)]<br />[InlineData("s1", "S2", false)]<br />public void TestCaseInsensitiveEquality(string s1, string s2, bool areEqual)<br /><br />по сравнению с <br /><br />[TestMethod]<br />public void TestSameStringDifferentCase()<br />{<br /> TestCaseInsensitiveEquality("s1", "S1", true);<br />}<br />[TestMethod]<br />public void TestDifferentStringDifferentCase()<br />{<br /> TestCaseInsensitiveEquality("s1", "S2", false);<br />}<br /><br />Мне представляется, что читабельность во втором случае не ухудшилась, а возможно и улучшилась. <br /><br />А как происходит отладка теста с конкретным набором параметров? В случае с явным описанием - вызов отладчика тривиален.<br /><br />Прошу прощения за наивный вопрос, но у меня было очень мало опыта с nUnit/xUnit, и в основном он сводился к мучительному подбору раннеров и адаптеров соответствующих версий. Mikhail Barghttps://www.blogger.com/profile/13610769544208096841noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-53581054938097958042016-05-06T05:53:23.822+03:002016-05-06T05:53:23.822+03:00Да, я как-то TheoryData сам не сразу нашел:), хотя...Да, я как-то TheoryData сам не сразу нашел:), хотя как нашел, понял, что штука очень полезная.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-8588730415845783232016-05-05T13:45:05.346+03:002016-05-05T13:45:05.346+03:00Спасибо за статью, TheoryData стал для меня открыт...Спасибо за статью, TheoryData стал для меня открытием.<br />Хотя, перед прочтением статьи я был настроен скептически, думал, что всё знаю о параметризированных тестах xUnit, и в очередной раз убедился в том, что не самый умный. ;)<br /><br />Всё-таки хорошая у нас профессия, каждый день можно получать удовольствие от новых знаний.Ievgenhttps://www.blogger.com/profile/09334535077668024949noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-949528473775032502016-05-05T13:38:44.341+03:002016-05-05T13:38:44.341+03:00Этот комментарий был удален автором.Ievgenhttps://www.blogger.com/profile/09334535077668024949noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-58981594505695710822016-05-04T21:08:27.605+03:002016-05-04T21:08:27.605+03:00Вы так пишите, как будто я какой-нибудь Скотт Гатр...Вы так пишите, как будто я какой-нибудь Скотт Гатри, который распоряжается бюджетами на тысячи человек:)).<br /><br />Единственный вариант - это завести тикет на user voice и собрать приличное количество голосов. Но я почти уверен, что ответ будет однозначным: "мы не хоим инвестировать во что-то, что устарело уже давно и для чего есть куча вменяемых альтернатив".Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-80976569683216465152016-05-04T20:19:00.781+03:002016-05-04T20:19:00.781+03:00А напишите в мс, что бы они в mstest параметризаци...А напишите в мс, что бы они в mstest параметризацию запилили :)Anonymoushttps://www.blogger.com/profile/03999939535124861861noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-3163750466636223452016-05-04T17:27:39.372+03:002016-05-04T17:27:39.372+03:00Угу. Уже завел репо на гитхабе:)Угу. Уже завел репо на гитхабе:)Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-82603042661353139062016-05-04T15:57:29.556+03:002016-05-04T15:57:29.556+03:00>> "Во-первых, этот подход совсем не ст...>> "Во-первых, этот подход совсем не строготипизированный, что позволяет вернуть разнородные данные и отгрести во время исполнения."<br />+1 идея для написания анализатора под эту проблемуAnonymoushttps://www.blogger.com/profile/17272301903085874085noreply@blogger.com