Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Модульное тестирование приложения на основе таймера?
В настоящее время я пишу простое мини-приложение на основе таймера в C#, которое выполняет действие n раз каждые k секунд.
Я пытаюсь принять тестовый стиль разработки, поэтому моя цель-модульное тестирование всех частей приложения.
Итак, мой вопрос: есть ли хороший способ модульного тестирования класса на основе таймера?
Проблема, как я вижу, заключается в том, что существует большой риск того, что выполнение тестов займет неудобно много времени, поскольку они должны ждать так и так долго, чтобы желаемые действия произошли.
Особенно если вы хотите получить реалистичные данные (секунды), а не использовать минимальное разрешение по времени, разрешенное фреймворком (1 мс?).
Я использую макет объекта для действия, чтобы зарегистрировать количество раз, когда действие было вызвано, и так, чтобы действие практически не занимало времени.
Я думаю, что в этом случае я бы проверил код, который фактически выполняется, когда таймер тикает, а не всю последовательность. На самом деле вам нужно решить, стоит ли вам проверять фактическое поведение приложения (например, если то, что происходит после каждого тика, резко меняется от одного тика к другому), или достаточно (то есть действие каждый раз одно и то же) просто проверить свою логику.
Поскольку поведение таймера гарантированно никогда не изменится, он либо будет работать правильно (т. е. вы правильно настроили его), либо нет; похоже, что это будет напрасное усилие, чтобы включить его в свой тест, если вам на самом деле это не нужно.
Я согласен с Дэнни в той мере, в какой это, вероятно, имеет смысл с точки зрения юнит-тестирования просто забыть о механизме таймера и просто проверить, что само действие работает так, как ожидалось. Я бы также сказал, что я не согласен с тем, что это напрасные усилия, чтобы включить конфигурацию таймера в какой-то автоматизированный набор тестов. Есть много крайних случаев, когда речь заходит о работе с приложениями синхронизации, и очень легко создать ложное чувство безопасности, проверяя только то, что легко проверить.
Я бы рекомендовал иметь набор тестов, который запускает таймер, а также реальное действие. Этот набор, вероятно, займет некоторое время для запуска и, скорее всего, не будет тем, что вы будете запускать все время на вашем локальном компьютере. Но установка этих типов вещей на ночной автоматизированной сборке действительно может помочь искоренить ошибки, прежде чем их станет слишком трудно найти и исправить.
Короче говоря, мой ответ на ваш вопрос-не беспокойтесь о написании нескольких тестов, которые действительно требуют много времени. Модульный тест-это то, что вы можете сделать, и заставьте этот набор тестов работать быстро и часто, но обязательно дополните его интеграционными тестами, которые выполняются реже, но охватывают большую часть приложения и его конфигурации.