Как мне выполнить модульное тестирование многопоточного кода?
Этот вопрос был опубликован multi-threaded некоторое время, но до сих unit-testing пор нет ответа ...
kleolb02 - хороший unittest ответ. Я постараюсь вникнуть unit-test в подробности.
Есть способ, который cross-threading я практикую для кода C#. Для unit-tests модульных тестов вы должны unit-testing уметь программировать воспроизводимые тесты, что unittest является самой большой проблемой unit-tests в многопоточном коде. Итак, мой unit-testing ответ направлен на принудительное multi-threaded использование асинхронного threads кода в тестовой системе, которая threading работает синхронно.
Это идея из книги unit-test Джерарда Месардоса «xUnit Test Patterns» и называется threads «Скромный объект» (стр. 695): вы unit-testing должны отделить основной unit-tests логический код и все, что multithreading пахнет асинхронным кодом, друг multithreading от друга. Это приведет к threads созданию класса для базовой threads логики, который работает unittest синхронно.
Это дает вам возможность unit-test протестировать код базовой unittest логики синхронным способом. У вас есть unit-testing полный контроль над временем unittest вызовов, которые вы выполняете unit-tests в основной логике, и, таким thread образом, вы можете делать cross-threading воспроизводимые тесты. И в этом ваша выгода multithread от разделения базовой логики threading и асинхронной логики.
Эта unit-tests базовая логика должна быть unit-testing обернута другим классом, который unittest отвечает за асинхронный прием threads вызовов базовой логики и cross-threading делегирует эти вызовы базовой логике. Производственный unit-testing код будет обращаться только unit-test к основной логике через этот multithreading класс. Поскольку этот класс unittest должен делегировать только unit-test вызовы, это очень «тупой» класс unit-test без особой логики. Таким multithreading образом, вы можете сохранить thread как минимум свои модульные multithread тесты для этого асинхронного threads рабочего класса.
Все, что multi-threaded выше этого (тестирование multi-threaded взаимодействия между классами), является multithreading тестами компонентов. Также threads в этом случае у вас должен threading быть полный контроль над unit-testing временем, если вы будете threading придерживаться шаблона «Скромный threads объект».
multithreading
unit-testing
Как мне выполнить модульное тестирование многопоточного кода?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.