Domanda

Voglio avvolgere un pezzo di codice che utilizza Windows Rappresentazione API in un po ' pulito classe di supporto, e come al solito, sto cercando un modo per andare prima i test.Tuttavia, mentre WindowsIdentity è una classe gestita, LogonUser chiamata che è necessario per eseguire la registrazione come un altro utente è una funzione non gestita in advapi32.dll.

Penso di poter risolvere questo grazie all'introduzione di una interfaccia per la mia classe di supporto da utilizzare e nascondere il P/Invoke chiamate in attuazione, ma il test che l'attuazione sarà ancora un problema.E si può immaginare di realizzare effettivamente la rappresentazione in esame, può essere un po ' problematico, dato che l'utente sarebbe in realtà bisogno di essere presente nel sistema.

È stato utile?

Soluzione

Indirizzo:Non codice di prova che non hai scritto.
Non si dovrebbe essere preoccupati con WinAPI attuazione non funziona (probabilmente funziona come previsto).La tua preoccupazione dovrebbe essere il test del Cablaggio, e cioèse il codice fa fare WinAPI chiamata.Nel caso In cui avete bisogno di deridere l'interfaccia e lasciare che il finto quadro dire se la chiamata è stata effettuata con parametri.Se sì, il gioco è fatto.

  • Creare IWinAPIFacade (con relativi WinAPI metodi) e l'attuazione CWinAPIFacade.
  • Scrivere un test che si inserisce in un finto di IWinAPIFacade e controllare che la chiamata viene effettuata
  • Scrivere un test per garantire che CWinAPIFacade è creato e collegato alla rete elettrica come un default (in funzionamento normale)
  • Implementare CWinAPIFacade che semplicemente non vedenti-delega a chiamate Platform Invoke - non c'è bisogno di auto-test di questo livello.Basta fare una verifica manuale.Speriamo che questo non cambia che spesso e niente pause.Se si trova che non in futuro, barricata con un po ' di prove.

Altri suggerimenti

Non so se vi seguo..Non volete testare il PInvoke te (non scrivere) in modo che si desidera verificare che la classe wrapper viene eseguita come previsto giusto?

Così, basta creare la propria interfaccia in classe wrapper e prova contro?

In termini di bisogno di impostare utenti, ecc, penso che sarebbe una pallottola avete bisogno di mordere.Sembrerebbe strano, per deridere un wrapper PInvoke chiamare, dal momento che si sarebbe semplicemente confermare e interfaccia esiste :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top