Sto scrivendo un involucro sottile attorno Dizionario che è progettato per essere thread-safe. Di conseguenza, sono necessari alcuni blocchi e la maggior parte della logica è intorno a garantire che le cose siano bloccate correttamente e accessibili in modo thread-safe.È possibile simulare/falsificare in giro per far sì che un blocco mancante causi un test non funzionante?
Ora, sto provando a testare l'unità. Una cosa importante che vorrei testare è il comportamento di blocco, per assicurarsi che sia corretto. Tuttavia, non ho mai visto questo fatto ovunque, quindi non sono sicuro di come farlo. Inoltre, so che potrei usare solo un mucchio di thread per gettare cose al muro, ma con questo tipo di test, non c'è alcuna garanzia che fallirà quando è sbagliato. Dipende dal comportamento definito dal sistema operativo con la pianificazione dei thread.
Quali sono le modalità per garantire che il mio comportamento di blocco sia corretto con i test delle unità?
+1 sul concetto della domanda; curioso perché non stai usando un "ConcurrentDictionary" per questo caso particolare. –
@TimMedora libreria di classi portatili indirizzate a Windows Phone :( – Earlz
Capito: dalla mia esperienza, bombardare una presunta classe thread-safe con migliaia di operazioni (cross-thread, sequenza variata) rivelerà rapidamente problemi, ma ovviamente non è deterministico. potrebbe aggiungere alcuni ganci di test interni per forzare lo scenario desiderato. –