Ich kann einen zuverlässigen Service/Actor nicht testen, indem ich einfach seinen Konstruktor aufrufen und dann seine Methoden testen. var testService = new SomeService();
löst eine NullReferenceException aus. Also, was kann ich mit entfalteten Service tun ..Service-Fabric-Unit-Test und Abhängigkeitsinjektion
Ich verstehe, dass die bereitgestellten SF Reliable Services/Actors sind nicht Standard-.NET-Klassen, und Unit-Tests von bereitgestellten S/A vielleicht eine seltsame Idee.
Wie auch immer, jetzt versuche ich es zu versuchen.
Zum Beispiel. Ich habe gerade einen Service bereitgestellt, als im Test habe ich ein Proxy-Objekt erstellt und Element in die Eingangswarteschlange von Service hinzugefügt. Dann muss ich behaupten, dass Eingangswarteschlange = 1 ist. Und es funktioniert, wenn ich gerade einen Dienst bereitgestellt habe und keine anderen Klienten/Dienste/Schauspieler seine Eingangswarteschlange benutzt haben. Aber das nächste Mal, wenn dieser Test fehlschlägt, ist das das Problem. Ich muss den Dienst dazu bringen, nicht mehr mit anderen Verbrauchern zu arbeiten, seine Warteschlange fallen zu lassen und sie dann zu testen. Zu diesem Zweck kann ich eine TestMode-Eigenschaft und einige Methoden wie PropareoForTests/TestingCompleted erstellen und sie vor und nach dem Test vom Test-Client aufrufen.
Ist das eine schlechte Idee, es so zu machen? Vielleicht gibt es einige Richtlinien für Unit-Tests SF? Vielen Dank.
UPDATE:
Während Service Fabric Web Reference Application example Untersuchung habe ich diese TODO Zeichenfolge gefunden:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
Bedeutet es, dass SF Dienstleistungen es ist DI-Unterstützung verbessern? Was ist mit Schauspielern?
Constructor Abhängigkeitsinjektion ist tatsächlich jetzt in den Akteuren verfügbar! Wenn Sie Ihren Akteurstyp registrieren, können Sie auch eine "Fabrik" registrieren, die eigentlich nur ein Func <> ist, wo Sie Ihre Actor-Klasseninstanz erstellen, wodurch Sie die Instanziierung Ihres Actors steuern können, um Abhängigkeiten durch dort zu injizieren. In Diensten können Sie dies bereits tun, überprüfen Sie, wie wir es im Party-Cluster-Beispiel tun: https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster/ ClusterService –
Ich schrieb eine Antwort auf die Abhängigkeit Injektion mit Einheit: http://stackoverflow.com/questions/30384780/azure-service-fabric-actor-dependency-injection/35900027#35900027 –
@VaclavTurecek Ihr Link ist gebrochen – Dismissile