Ich schreibe einen dünnen Wrapper um das Wörterbuch, das thread-sicher entworfen wurde. Daher sind einige Sperren erforderlich, und der Großteil der Logik besteht darin, sicherzustellen, dass Dinge ordnungsgemäß gesperrt sind und threadsicher darauf zugegriffen wird.Ist es möglich, herumzuspielen/gefälscht zu werden, um ein fehlendes Schloss zu einem fehlerhaften Test zu machen?
Jetzt versuche ich es zu testen. Eine große Sache, die ich gern testen würde, ist das Sperrverhalten, um sicherzustellen, dass es korrekt ist. Allerdings habe ich das nie irgendwo gesehen, also bin ich mir nicht sicher, wie ich das anstellen soll. Außerdem weiß ich, dass ich einfach eine Menge Fäden benutzen kann, um Zeug an die Wand zu werfen, aber bei dieser Art von Test gibt es keine Garantie, dass es scheitern wird, wenn es falsch ist. Es liegt an dem vom Betriebssystem definierten Verhalten bei der Thread-Planung.
Welche Möglichkeiten gibt es, um sicherzustellen, dass mein Blockierverhalten bei Komponententests korrekt ist?
+1 auf das Konzept der Frage konsistent zu duplizieren; neugierig, warum Sie für diesen speziellen Fall kein 'ConcurrentDictionary' verwenden. –
@TimMedora portable Klassenbibliothek Targeting Windows Phone :( – Earlz
Verstanden. Aus meiner Erfahrung wird Bombardierung einer vermutlichen Thread-Safe-Klasse mit Tausenden von Operationen (Cross-Thread, abwechslungsreiche Reihenfolge) schnell Probleme aufdecken, aber das ist natürlich nicht deterministisch könnte ein paar interne Test-Hooks hinzufügen, um das gewünschte Szenario zu erzwingen –