Wenn Sie Unit-Test wollen (Test in Isolation) haben Sie
- Test permissionLogic und Sie müssen
- Test, der Ihre Contrologic (d MVVM) die Genehmigungslogik verwendet.
Test-Securitymanager für permissionLogic
Sie die permissionLogic mit Methoden zu einer Klasse für sich extrahieren kann
public class SecurityManager
{
bool IsAllowedToPrint(User user);
bool IsAllowedToAdminister(User user);
}
dann schreiben Sie Einheit
User user = CreateAdimistrator();
Assert.AreEqual(true, securityManager.IsAllowedToAdminister(user));
testet Kontrollmittel (d.h. MVVM) verwendet die Berechtigungslogik
Erstellen Sie einen Mock-SecurityManager, der die Funktionalität immer zulässt/verbietet. und Unit-Tests für den Controller schreiben, wenn es wie erwartet reagiert.
var allowEverythingMock = CreateSecurityManagerMockThatAllowsEverything();
var mvvm = CreateMvvm(allowEverythingMock);
Assert.IsNotNull(mvvm.GetAdminGui());
ich shure bin nicht, ob es eine einfache Möglichkeit, bekommt einen Integrationstest zu schaffen, in dem Click-Once-App nutzt tatsächlich die realen Securitymanager und das Ergebnis überprüft.
Update nach mehr Infos bekommen, was das Ziel ist
Schreib Unit-Tests für die Steuerung, wenn es wie erwartet reagiert.
var controller = CreateCreate(Permission.Low);
try
{
// File io is not allowed with low permissions
controller.SaveTextAsFile("HellowWorld", @"c:\temp\UnittestResult.txt");
Assert.Fail("The Controller should have forbidden this");
} catch(PermissionException pex) {
// everything is ok. This specific exception was expected.
}
Ich bin mir nicht sicher, ob ich dir folge ... Meine App hat nicht das Konzept von Benutzern, die Tatsache ist einfach, dass es in einem permissiven Kontext ausgeführt wird und somit keine Dateien schreiben/lesen kann Zufällig usw. Ich möchte über Unit-Tests sicherstellen, dass ich mein Programm mit den niedrigen Berechtigungen ausführen kann, die im Manifest der Anwendung beschrieben sind ... – Max
Ich habe mein Beispiel aktualisiert. "Ich möchte über Unit-Tests sicherstellen, dass ich mein Programm mit den im Anwendungsmanifest beschriebenen geringen Berechtigungen ausführen kann". Da Sie Dateisystem/Manifest referenzieren, suchen Sie nach einem Integrationstest, nicht nach einem Komponententest. Entschuldigung, ich habe keine Erfahrung im Schreiben von Manifest-basierten-Click-Once-Integrationstests – k3b
hast du [testing-clickonce-applications?] Gesehen (http://stackoverflow.com/questions/730090/testing-clickonce-applications?) – k3b