Quiero envolver un trozo de código que usa la API de suplantación de Windows en una pequeña clase de ayuda, y como de costumbre, estoy buscando una forma de probar primero. Sin embargo, mientras WindowsIdentity es una clase administrada, la llamada LogonUser que se requiere para realizar el inicio de sesión como otro usuario es una función no administrada en advapi32.dll.¿Es posible probar la unidad de una clase que realiza llamadas P/Invoke?
Creo que puedo solucionar esto introduciendo una interfaz para que mi clase de ayudante use y oculte las llamadas P/Invoke en una implementación, pero probar esa implementación seguirá siendo un problema. Y puede imaginarse que realizar la suplantación en la prueba puede ser un poco problemático, dado que el usuario realmente necesitaría existir en el sistema.
Este es el enfoque que tomé, y estoy bastante contento con él. Sin embargo, todavía me gustaría poder verificar que mi clase concreta está "haciendo lo correcto" cuando llama a la api de Win32. :) – Rytmis
Hay. Se llama prueba de integración. – nathanchere
@nathanchere - + 1ed. Solo asegúrese de que esté cubierto como parte de alguna prueba de nivel del sistema (manual/aceptación). Así que incluso el caso límite 'CWinAPIFacade está roto' se detecta temprano (automatizado es, por supuesto, ideal). – Gishu