Dove definisco gli endpoint del client WCF in un progetto di test?

5

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.

    
posta John Wu 20.04.2017 - 04:33
fonte

2 risposte

3

C'è un semplice trucco che puoi usare.

Visual Studio caricherà l'app.config per il progetto di test nel suo processo host se è presente. Tuttavia, i progetti di test in genere non hanno app.configs. Puoi forzare Visual Studio a crearne uno aggiungendo le impostazioni al tuo progetto:

  1. Fai clic con il pulsante destro del mouse sul progetto e seleziona "Proprietà".
  2. Vai all'opzione "Impostazioni", nella barra di sinistra.
  3. Inserisci qualcosa in questa pagina. Qualsiasi cosa funzionerà.
  4. Salva il progetto.

Ora vedrai che il tuo progetto di test ora ha un file app.config. Basta aggiungere i tuoi endpoint / attacchi WCF lì e sei a posto.

    
risposta data 22.04.2017 - 16:18
fonte
0

La mia soluzione preferita per i progetti di test come la tua è quella di mantenere più modelli di file .config, utilizzando SlowCheetah per modificare i file di configurazione principali in base alla configurazione di build.

link

È stato piuttosto semplice mantenere i test nella stessa base di codice sorgente, indirizzando ambienti come localDev, Dev, QA, Stage e Prod (con la selezione dei test) semplicemente cambiando la configurazione di build (che può avvenire automaticamente in ambienti di generazione continua) )

In questo modo, il test runner ottiene sempre lo stesso file .config, ma il file di configurazione viene modificato a seconda della configurazione creata.

    
risposta data 26.04.2017 - 00:20
fonte

Leggi altre domande sui tag