Как мне выполнить модульное тестирование многопоточного кода?

Этот вопрос был опубликован 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

2022-11-21T17:45:27+00:00
Вопросы с похожей тематикой, как у вопроса:

Как мне выполнить модульное тестирование многопоточного кода?