При использовании моего приложения я наткнулся на состояние гонки в некотором коде, который использует NSOperationQueue
для выполнения задач асинхронно после событий, вызванных пользователем. Я знаю, как исправить состояние гонки, так как это глупая ошибка дизайна, в которую я не буду вникать, но я хотел бы доказать ошибку с тестовым примером (чтобы он не возвращался во время оптимизации/рефакторинга по линии). Это меня насторожило. Как вы можете протестировать что-то многопоточное, особенно когда целью теста является создание условия гонки?Единичное тестирование кода на основе потоков? Принуждение состояния гонки
У кого-нибудь есть ссылки на справочные материалы, на которые я могу ссылаться, когда речь заходит о работе с потоками и модульным тестированием? Меня особенно интересует поколение гонок.
Я бы предположил, что вы издеваетесь над любыми разделяемыми структурами данных, а внутри ваших макетных объектов вы можете выполнять любую синхронизацию, необходимую для выполнения разных потоков в «неправильном» порядке. –