Ho una libreria di classi-- chiamala Services.dll
- che è un wrapper per alcune funzionalità di terze parti. La terza parte ci ha fornito un sacco di DLL e quelle DLL "interne" chiamano un servizio WCF.
Normalmente, quando Services.dll
è in esecuzione, vive all'interno del processo del sito Web e utilizza il web.config associato al sito. Quindi, quando voglio definire gli endpoint del client WCF, modifico web.config. Questo è molto semplice.
Ma ora voglio scrivere una suite di test di integrazione automatizzata. Il progetto di test è ovviamente una libreria di classi (chiamiamola Services.Tests.dll
), quindi prenderà qualsiasi configurazione definita per il processo di hosting. Ma penso che nel caso di un progetto di test, il processo di hosting sia lo stesso Visual Studio. Certamente il progetto di test non emette un .exe.
Quindi, dove posso definire gli endpoint del client WCF per il progetto di test? Quale file di configurazione devo modificare? Modifico devenv.exe.config
? Configuro una specie di file di configurazione "satellite" (ad esempio Services.Tests.dll.config
) - in tal caso, come faccio a ottenere il test runner di Visual Studio per prelevare la configurazione?
Oppure ... c'è un modo per farlo senza configurazione, intercettando / prendendo in giro le chiamate a System.Configuration
? Purtroppo non posso modificare le DLL di terze parti.
Oppure ... sovrascrivo con un uso intelligente di ServicePointManager , in modo che la configurazione non sia un problema? Non sono sicuro di come lo farei.
Oppure ... è la migliore pratica per scrivere un progetto di test di integrazione non come una libreria di classi ma come un file .exe, con il proprio app.config?
Nota: io sono non test di unità in esecuzione (quelli sono separati). Questi sono test di integrazione, quindi non voglio isolare le chiamate WCF. Ho bisogno di loro e ho bisogno che siano configurati per puntare ai server di prova giusti.