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

Этот вопрос был опубликован threads некоторое время, но до сих thread пор нет ответа ...

kleolb02 - хороший cross-threading ответ. Я постараюсь вникнуть threads в подробности.

Есть способ, который threading я практикую для кода C#. Для unit-testing модульных тестов вы должны unittest уметь программировать воспроизводимые тесты, что threading является самой большой проблемой threading в многопоточном коде. Итак, мой threads ответ направлен на принудительное multithreading использование асинхронного unit-tests кода в тестовой системе, которая threading работает синхронно.

Это идея из книги unit-test Джерарда Месардоса «xUnit Test Patterns» и называется unittest «Скромный объект» (стр. 695): вы multi-threaded должны отделить основной unit-testing логический код и все, что unittest пахнет асинхронным кодом, друг unittest от друга. Это приведет к cross-threading созданию класса для базовой cross-threading логики, который работает unit-testing синхронно.

Это дает вам возможность cross-threading протестировать код базовой multi-threaded логики синхронным способом. У вас есть multithreading полный контроль над временем unit-tests вызовов, которые вы выполняете unit-tests в основной логике, и, таким multi-threaded образом, вы можете делать threading воспроизводимые тесты. И в этом ваша выгода threads от разделения базовой логики multi-threaded и асинхронной логики.

Эта multi-threaded базовая логика должна быть unit-test обернута другим классом, который multithreading отвечает за асинхронный прием unittest вызовов базовой логики и multithreading делегирует эти вызовы базовой логике. Производственный unit-tests код будет обращаться только unit-test к основной логике через этот threading класс. Поскольку этот класс threading должен делегировать только unittest вызовы, это очень «тупой» класс multithreading без особой логики. Таким multithread образом, вы можете сохранить unit-tests как минимум свои модульные unit-test тесты для этого асинхронного multithread рабочего класса.

Все, что threading выше этого (тестирование multithread взаимодействия между классами), является multithread тестами компонентов. Также multithreading в этом случае у вас должен thread быть полный контроль над unit-testing временем, если вы будете unit-testing придерживаться шаблона «Скромный threading объект».

multithreading

unit-testing

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

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