kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Erik Öjebo
Erik Öjebo
Вопрос

Юнит-тестирование приложения на основе таймера?

В настоящее время я пишу на C# простое мини-приложение на основе таймера, которое выполняет действие n раз каждые k секунд.
Я пытаюсь принять стиль разработки, основанный на тестировании, поэтому моя цель - провести модульное тестирование всех частей приложения.

Итак, мой вопрос: существует ли хороший способ модульного тестирования класса, основанного на таймере?

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

19 2008-08-15T07:02:45+00:00 4
 csharpwinphonexaml
csharpwinphonexaml
Редактировал вопрос 4-го мая 2014 в 9:53
Программирование
timer
unit-testing
.net
c#
 graham.reeds
graham.reeds
15-го августа 2008 в 9:01
2008-08-15T21:01:50+00:00
Дополнительно
Источник
Редактировать
#8415704

У Лена Холгейта есть серия из 20 статей о тестировании кода на основе таймеров.

10
0
Решение / Ответ
David Sykes
David Sykes
15-го августа 2008 в 7:43
2008-08-15T07:43:18+00:00
Дополнительно
Источник
Редактировать
#8415703

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

9
0
 TheSmurf
TheSmurf
15-го августа 2008 в 7:09
2008-08-15T07:09:04+00:00
Дополнительно
Источник
Редактировать
#8415701

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

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

3
0
Mike Deck
Mike Deck
15-го августа 2008 в 9:28
2008-08-15T21:28:51+00:00
Дополнительно
Источник
Редактировать
#8415705

Я согласен с Дэнни, поскольку он, наверное, имеет смысл с модульного тестирования зрения, чтобы просто забыть о механизме таймера и просто убедиться в том, что само действие не работает, как ожидалось. Я также хотел сказать, что я не согласен в том, что он'ы впустую усилия, чтобы включить настройки таймера в автоматический тестовый набор какой-то. Есть много пограничных случаев, когда дело доходит до работы с приложениями, сроки и It's очень легко чтобы создать ложное чувство безопасности только испытывая вещи, которые легко проверить.

Я рекомендовал бы иметь набор тестов, который запускает таймер, а также реальных действий. В этом люксе, вероятно, займет некоторое время и, вероятно, не то, что вы хотели работать все время на локальном компьютере. Но установка этих видах вещи по ночам автоматической сборки может реально помочь искоренить ошибки, прежде чем они становятся слишком трудно найти и исправить.

Короче говоря, мой ответ на ваш вопрос, Дон'т беспокоиться о том, чтобы написать несколько тестов, которые занять много времени для запуска. Люкс юнит-тестов, что вы можете и сделать этот тест быстро бегать и часто, но убедитесь, что дополнить, что с интеграционные тесты, которые выполняются реже, но крышка более из приложения и его конфигурации.

1
0
Похожие сообщества 16
DotNetRuChat
DotNetRuChat
6 652 пользователей
Чат русскоязычного .NET сообщества http://dotnet.ru/ Правила: https://t.me/DotNetRuChat/704399 Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @AvaloniaRU, @xamarin_russia, @DotNetRuJobs, @uwp_ru Флуд в @dotnettalks
Открыть telegram
Вакансии .NET
Вакансии .NET
3 530 пользователей
Правила: https://t.me/DotNetRuJobs/123 Канал с вакансиями - https://t.me/DotNetRuJobsFeed Вам могут быть интересны: @dotnetruchat, @cilchat, @fsharp_chat, @pro_net, @AvaloniaRU, @xamarin_russia Флуд в @dotnettalks
Открыть telegram
Microsoft Stack Jobs
Microsoft Stack Jobs
2 414 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 330 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
pro.net
pro.net
1 820 пользователей
Обсуждение .NET и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). https://t.me/pro_net/34653 Флудилка: @dotnettalks
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 772 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 6 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
ID
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией