Ich arbeite mit einem vorhandenen Code und versuche, ihn hinzuzufügen und die Komponententests dafür zu erhöhen. Aber einige Probleme mit dem Test des Codes zu bekommen.Entwerfen von Konstruktoren für die Testbarkeit
Original-Constructor:
public Info() throws Exception
{
_ServiceProperties = new ServiceProperties();
_SshProperties = new SshProperties();
}
Ich bin mir bewusst, dass dies schlecht ist, und offensichtlich nicht prüfbar. In einer Junit-Umgebung kann diese Klasse nicht jedes Mal erstellt werden, da sie nicht in der Lage ist, die notwendigen Eigenschaften zu finden, um sich selbst zu konstruieren. Nun, ich bin mir bewusst, dass diese Klasse viel mehr testbar wäre mit der einfachen Änderung der Bewegung von allem, was mit "neu" als Parameter vorangestellt ist.
So beende ich oben mit:
New Constructor:
public Info(ServiceProperties srvProps, SshProperties sshProps) throws Exception
{
_ServiceProperties = srvProps;
_SshProperties = sshProps;
}
Was mich richtig Unit-Test diese Info-Klasse ermöglicht. Das Problem aber ist jetzt, dass alle Arbeiten in eine andere Klasse geschoben wird:
einige andere Klasse Methode:
public void useInfo() throws Exception
{
ServiceProperties srvProps = new ServiceProperties();
SshProperties sshProps = new SshProperties();
Info info = new Info(srvProprs, sshProprs);
doStuffWithInfo(info);
}
Nun ist diese Methode nicht prüfbar ist. Alles, was ich geschafft habe, ist wegzudrücken, wo die Konstruktionen dieser Property-Objekte auftreten, und irgendwo anders wird ein Stück Code stecken bleiben und muss eigentlich "neu" heißen.
Hier ist der Haken für mich: Ich kann nicht herausfinden, wie man diese Kette von Ereignissen bricht, einfach diese "neuen" Anrufe woanders hinzuschieben. Was vermisse ich?
können Sie auch einen Blick auf unsere Frühjahrskursmaterial: http://www.trainologic.org/courses/info/2 –