Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
HostAdapter für eine Test Umgebung
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

HostAdapter für eine Test Umgebung

beantworten | zitieren | melden

Hallo,

aktuell bin ich dabei zu versuchen einen funktionierenden HostAdapter für eine Test Umgebung anzulegen. Hat jemand von euch damit schon Erfahrungen sammeln können?

Grüße, ltrader
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10074

beantworten | zitieren | melden

Hostadapter?
private Nachricht | Beiträge des Benutzers
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

beantworten | zitieren | melden

genau. folgendes:
MSDN: Overview of Host Adapters
nur leider finde ich ist die Sache nicht besonders gut dokumentiert vor allem im Hinblick darauf, wie ich meine Unit Tests im VSTO Prozess ausführen kann.
Sicherlich ist ein HostAdapter hierzu der richtige Ansatz. Wie aber klinke ich mich an den anderen Prozess ohne Remoting benutzen zu müssen?
Vielleicht hat ja der Eine oder Andere von euch auf diesem Gebiet schon Erfahrungen?

Viele Grüße
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
spike24
myCSharp.de - Member



Dabei seit:
Beiträge: 451
Herkunft: Steiermark Österreich

beantworten | zitieren | melden

Ich höre das Wort Hostadapter heute zum erstenmal und habe auch nach lesen des Links keine Ahnung was das Ding können soll.
Meine Vermutung ist, dass man durch einen HostAdapter eine selbst geschriebene Klasse testbar macht indem diese nicht mehr auf einen Server mit Echtdaten zugreift, sondern eben auf diesen HostAdapter desen Verhalten man vor jedem Testlauf konfigurieren kann.
Falls dem der Fall sein soll und es Dir um das Testen einer Clientklasse geht, kann ich Dir nur wärmsten NMock empfehlen.
Ist auf den ersten Moment ein bisschen schwierig zu bedienen, aber wenn man es mal herausen hat, kann man in Verbindung mit PrivateObject (.Net) alles testen.
(ich == Mock-Profi in Firma)
mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10074

beantworten | zitieren | melden

@ltrader:

Bevor wir hier jetzt stundenlang aneinander vorbeireden, erzähl mal was Du machen willst,
nicht mit welchen mitteln.
private Nachricht | Beiträge des Benutzers
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

beantworten | zitieren | melden

@FZelle: Du hast vollkommen recht; ich werde das mal versuchen zu konkretisieren

Ja, leider scheint die Sache mit den HostAdapter n nur sehr rudimentär dokumentiert zu sein.
Definiert ist der HostAdapter in der MSDN unter Overview of Host Adapters folgendermassen: „A host adapter is a software component that lets you run tests in a specific environment“. Den Testing Host festlegen kann man im Visual Studio nach Doppelklick auf die *.testrunconfig Datei im Bereich Hosts.

Konkreter Fall bei mir: Als Test Entwickler möchte ich den Entwicklern die Möglichkeit bieten, unser VSTO (Visual Studio Tools For Office) Projekt – zumindest Teile davon - direkt im Excel Prozess testen zu können. Wenn es mir gelingt, die Unit Tests, die wir im Visual Studio schreiben, direkt im Excel Prozess auszuführen, ist das meines Erachtens nach ein Testen unter „realistischeren“ Bedingungen, als wenn wir den standard Prozess nutzen. Ausserdem bin ich nicht sicher, in wieweit z.B. VSTO excelspezifische Funktionalität – Erstellen der Excel Application Instanz – im VS testing Standardprozess möglich ist.
Viele Grüße
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

beantworten | zitieren | melden

schade, dass hier auch niemand von Euch Ideen zu dem Thema hat. Das hatte ich fast befürchtet. Im Netz und in einschlägiger Literatur hatte ich bisher auch nicht besonders viel Aufschlussreiches finden können.

Leider werde ich in den nächsten Wochen kaum darum herum kommen, einen Host Adapter für VSTO (Visual Studio Tools for Office) zu bauen befürchte ich.

Sollte doch jemand von Euch über irgendwelche Infos zum Thema stolpern, bin ich ein dankbarer Abnehmer ;-)

Viele Grüße

@spike24:
Zitat
(ich == Mock-Profi in Firma)
Klingt sehr interessant für mich! Würde auch die Bezeichnung Testentwickler passen? Das genau ist meine neue Aufgabe im Unternehmen
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
spike24
myCSharp.de - Member



Dabei seit:
Beiträge: 451
Herkunft: Steiermark Österreich

beantworten | zitieren | melden

Nein Testentwickler wäre übertrieben, ich war halt der erste der das Ding benötigt (benützt) hat und ich habe bei manchen Dingen halt die angewohnheit es richtig zu benützen und der Mocker (mein vergebener Name dafür, Hawara ist auch geläufig) bietet viele Möglichkeiten.
Fazit: Du kann mit dem Hawara gegen (mit) einem Interface ein Objekt erzeugen
IObjectInterface objectInterfaceMock = Mock.GetNewMock<IObjectInterface>();
und danach kannst Du sagen wie sich das Objekt verhalten soll:

Expect.Once.On (objectJnterfaceMock).Method ("MethodName").With (Is.EqualTo ({ParameterWert}).Will (Return.Value({erforderlicherReturnValue});
Das ganze geht auch mit out parameter

.With (Is.Out).Will (new SetNamedParameterAction ("parameterName", {parameterValue}));

Das einzige was man halt braucht ist ein Interface
mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
private Nachricht | Beiträge des Benutzers
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

beantworten | zitieren | melden

Ah verstehe. Mit Rhino Mocks habe ich mich ansatzweise mal auseinandergesetzt. Ich selber bin aber zu dem Entschluss gekommen, Mocking nur dann einzusetzen wenn es nicht anders geht. Das Ganze wird dann immer recht schnell komplex und vor allem macht man implizit Annahmen über das Verahlten des Codes, nicht nur über dessen Resultate. (Behavior verification).

Viele Grüße, ltrader

P.S: Mal sehen ob ich doch etwas mehr noch über den Host Adapter finden kann.
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
spike24
myCSharp.de - Member



Dabei seit:
Beiträge: 451
Herkunft: Steiermark Österreich

beantworten | zitieren | melden

Wir haben WCF Services geschrieben und dann zu jedem Service einen passenden Client um die Service aufrufe zu kapseln. Und bei diesen Tests muss ich fast den Server Mocken, einerseits da ich im Test den Server nicht aufbauen kann, andererseits weil ich ja bestimmen muss wie oft und wie der Client bei einem Aufruf zum Server geht.
Aber auch bei anderen Klassen, es ist richtig, dass ich hier das Interne Verhalten der Klasse teste und nicht nur das Ergebniss was ja "richtiger" wäre, aber wenn ich keinen Mock verwende, dann würde ich auch die andere Klasse mit testen und das ist dann nicht mehr sinn eines Unittests.
Wenn ich einen Test für eine Klasse (Funktion) schreibe, dann wird im Testdurchlauf nur diese eine Funktion durchlaufen, alle externen Aufrufe der Klasse werden durch Mock-Objekte oder DummyObjekte* abgefangen.
Der Nachteil wäre, wenn man es nicht so machen würde, falls sich eine Kernklasse ändert und dann nicht mehr funktioniert, schlagen alle tests fehl und nicht nur die Tests der Kernklasse. Das war unser Hintergedanke warum wir das so machen.

* selbst geschriebene Klassen die der zu testenden Klasse Übergeben werden.
mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
private Nachricht | Beiträge des Benutzers
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

beantworten | zitieren | melden

änlich versuche ich es gemeinhin auch zu machen - dass ich die Klassen/Objekte von denen mein System Under Test abhängig ist, durch Test Doubles ersetze. Damit vermeidet man eben die Problematik, dass Gedeih und Verderb des Tests von Pdoduktivkomponenten abhängig ist, die ihrerseits mit ihrem Verhalten Einfluss auf den Test haben.
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers