Frage

Die meisten oder alle Endeca der Objekte haben interne Konstrukteure. Ich arbeite an einem guten Projekt, das große Testabdeckung rund um die Endeca API fehlt, gibt es gute Strategien, um Unit-Tests, die Wechselwirkungen mit Endeca?

Bisher ist die beste, die wir haben ist eine Art eines armen Adapter-Muster des Mannes:

public class DimValue : IDimValue
{
    public DimValue(Dimension dim, DimVal dimValue)
    {
        Dimension = dim;
        Value = dimValue;
    }

    public virtual bool IsNavigable()
    {
        return Value.IsNavigable();
    }

    public virtual long Id()
    {
        return Value.Id;
    }

    // and so on...
}

Wir können dann unsere eigene Art verspotten, DimValue. Ist dies der beste Weg, um ihre API als prüfbar zu halten, wie sein kann? Oder gibt es eine andere Methode, die dies bevorzugt ist?

War es hilfreich?

Lösung

Wenn Sie versuchen, um Ihre Nutzung der API zu testen, dann würde ich den Ansatz empfehlen Sie erwähnt.

Es ist ein gutes Design-Ziel Ihrer Anwendung auf Ihrem eigenen Abstraktionen gebaut sein Schreiben, nicht jemand anderes. Die Adapterschicht gibt Ihnen die Möglichkeit, die API in eine Domäne Sprache Ihre Entwickler sind bequemer zu übersetzen mit und gibt Ihnen die Freiheit zu ändern Technologien später, wenn das Produkt Sie verwenden in irgendeiner Weise zurückbleibt.

hatte ReSharper ein großartiges Feature für die Klassen-Wrapper zu schaffen. Erstellen Sie eine Klasse, fügen Sie ein Element, das die Art ist, dass Sie wickeln wollen .. dann löst der generieren Delegierten Refactoring. Pick ‚alle öffentlichen‘ und los geht .. ungeöffnete Klasse.

Es werden nur die Teilmenge ihrer Funktionalität aussetzen, dass Sie verwenden, tatsächlich. In Ihrer Verpackung Code, bieten Schnittstellen, so dass Sie verspotten.

Wenn Sie Endeca API als eine Form der Regression Suite testen, so dass Sie leichter neuer ihre API freigegeben akzeptieren können, dann würde ich nur Schreibtests bei einer ‚Akzeptanz‘ Ebene; Ausübung des API sie dir geben. Aber noch einmal, nur die Art und Weise testen Sie ihre API tatsächlich verwenden.

Ich würde den oben beschriebenen Ansatz tun, aber ...

TypeMock werden Sie Mock-Klassen ohne Schnittstellen lassen, damit einen anderen Ansatz erlauben kann.

Hope, das hilft.

Andere Tipps

Die meisten Endeca Klassen sind konkret, so dass es schwierig ist, Unit-Tests zu tun, in unserem letzten Projekt, das wir uns selbst eine abstrakte Schicht definiert ist, das genau eine Fassadenschicht zwischen unserem eigenen Code und Endeca API war z.B. IEndecaQuery. Mit dieser Abstraktionsschicht können wir einen Test schnell und ohne wirklichen Endeca Zugang zu tun, wissen Sie, eine Endeca Verbindung öffnen werden Sie einige Sekunden jedes Mal kosten. Es war viel Arbeit, alle notwendigen Endeca gefälschte Objekte zu implementieren. Unsere Anwendung war eine E-Commerce-Website und wir genutzt Endeca für alle Einträge, Suchfunktionen.

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