Sto tentando di testare l'unità di un motore di gestione host WCF che ho scritto. Il motore fondamentalmente crea istanze ServiceHost al volo in base alla configurazione. Questo ci consente di riconfigurare dinamicamente quali servizi sono disponibili senza doverli disattivare tutti e riavviarli ogni volta che viene aggiunto un nuovo servizio o viene rimosso uno vecchio.
Tuttavia, ho riscontrato difficoltà nel testare l'unità di questo motore di gestione host, a causa del modo in cui funziona ServiceHost. Se un ServiceHost è già stato creato, aperto e non ancora chiuso per un particolare endpoint, non è possibile creare un altro ServiceHost per lo stesso endpoint, con conseguente eccezione. A causa del fatto che le moderne piattaforme di unit test parallelizzano la loro esecuzione dei test, non ho un modo efficace per unit test di questo pezzo di codice.
Ho usato xUnit.NET, sperando che a causa della sua estensibilità, avrei potuto trovare un modo per costringerlo a eseguire i test in serie. Tuttavia, non ho avuto fortuna. Spero che qualcuno qui su SO abbia riscontrato un problema simile e sappia come eseguire i test unitari in serie.
NOTA: ServiceHost è una classe WCF, scritta da Microsoft. Non ho la capacità di cambiare il suo comportamento. Anche l'hosting di ciascun endpoint del servizio una sola volta è il comportamento corretto ... tuttavia, non è particolarmente favorevole ai test di unità.
TestServer
in finestra mobile. Quindi ho dovuto serializzare i test di integrazione.