En utilisant mon application, je suis tombé sur une condition de concurrence dans un code qui utilise un NSOperationQueue
pour exécuter des tâches de manière asynchrone suite à des événements déclenchés par l'utilisateur. Je sais comment réparer la condition de concurrence, car c'est une erreur de conception stupide que je ne vais pas approfondir, mais je voudrais prouver le bug avec un cas de test (pour qu'il ne revienne pas lors de l'optimisation/refactoring sur toute la ligne). Cela m'a bloqué. Comment va-t-on tester quelque chose qui est multi-thread, surtout quand le but du test est de générer une condition de concurrence?Unité testant le code basé sur le thread? Forcer une condition de concurrence
Quelqu'un a-t-il des liens vers du matériel de référence auquel je peux me référer lorsqu'il est question de threads et de tests unitaires? Je suis particulièrement intéressé par la génération de conditions de course.
Je suppose que vous vous moquez de toutes les structures de données partagées, et à l'intérieur de vos objets simulés vous pouvez effectuer toute la synchronisation dont vous avez besoin pour que les différents threads s'exécutent dans le «mauvais» ordre. –