Frage

Ich will wickeln Sie ein Stück code, der die Windows-Identitätswechsel-API in eine nette kleine helper-Klasse, und wie üblich, ich bin auf der Suche nach einem Weg zu gehen, testen Sie zuerst an.Jedoch, während WindowsIdentity ist eine verwaltete Klasse, die LogonUser-Aufruf, der erforderlich ist, um tatsächlich die Anmeldung als anderer Benutzer wird eine nicht verwaltete Funktion, die in advapi32.dll.

Ich denke, dass ich arbeiten kann, um dieses durch die Einführung einer Schnittstelle für meine helper-Klasse zu verwenden, und verstecken Sie die P/Invoke-Aufrufe in einer Implementierung, aber das testen, die Implementierung wird noch ein problem werden.Und Sie können sich vorstellen, tatsächlich ausführen der Identitätswechsel in der test kann ein wenig problematisch sein, da die Benutzer wirklich brauchen, um auf dem system vorhanden sind.

War es hilfreich?

Lösung

Leitlinie:Nicht-test-code, den Sie noch nicht geschrieben.
Sie sollten nicht besorgt sein, mit WinAPI-Implementierung nicht funktioniert (die meisten wahrscheinlich, es funktioniert wie erwartet).Ihr Anliegen sollte sein, testen Sie die 'Verkabelung' sind alsowenn Ihr code das Recht WinAPI-aufrufen.In dem Fall, alle Sie brauchen, ist zu verspotten, aus der Benutzeroberfläche und lassen Sie die mock-framework mitzuteilen, wenn Sie den Anruf mit der rechten params.Wenn ja, sind Sie fertig.

  • Erstellen IWinAPIFacade (mit relevanten WinAPI-Methoden) und die Durchführung CWinAPIFacade.
  • Schreiben Sie eine Prüfung, die Stecker in eine mock IWinAPIFacade und stellen Sie sicher, dass Sie die entsprechende Anruf
  • Schreiben Sie einen test, um sicherzustellen, dass CWinAPIFacade erstellt und steckte in einem Standard - (im normalen funktionieren)
  • Implementieren CWinAPIFacade, die einfach blind-Delegierten Platform Invoke-Aufrufe - nicht müssen auto-test dieser Ebene.Nur tun eine manuelle Prüfung.Hoffentlich wird sich nicht ändern, dass oft, und nichts bricht.Wenn Sie feststellen, dass es tut in die Zukunft, Barrikade, es mit einigen tests.

Andere Tipps

Ich bin nicht sicher, ob ich dir Folgen..Sie wollen nicht, um test die PInvoke sich selbst (Sie hat es nicht geschrieben), so dass Sie testen möchten, dass die wrapper-Klasse erwartungsgemäß Recht?

So erstellen Sie einfach Ihre Schnittstelle in der wrapper-Klasse und testen Sie gegen das?

In Bezug benötigen, um Benutzer einzurichten etc, ich denke, das wäre eine Kugel, die Sie brauchen, um zu beißen.Es würde seltsam erscheinen, zu verhöhnen, eine wrapper-PInvoke aufrufen, da müsste man einfach nur bestätigen und die Schnittstelle ist vorhanden :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top