Domanda

La maggior parte o tutti gli oggetti di Endeca hanno costruttori interni. Sto lavorando su un progetto di bene che manca grande copertura di test in tutto l'API Endeca, ci sono tutte le strategie buone a Unit Testing interazioni con Endeca?

Finora il migliore che abbiamo è una specie di modello di adattatore di un uomo povero:

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...
}

Possiamo quindi prendere in giro il nostro tipo, DimValue. È questo il modo migliore per mantenere le loro API come verificabile come può essere? O c'è un altro metodo che è preferito a questo?

È stato utile?

Soluzione

Se si sta cercando di verificare l'utilizzo delle API, allora mi sento di raccomandare l'approccio lei ha citato.

Si tratta di un buon obiettivo di progettazione di scrivere l'applicazione costruita sulle proprie astrazioni, non di qualcun altro. Lo strato adattatore ti dà la possibilità di tradurre l'API in un linguaggio dominio sviluppatori sono più comodi con e ti dà la libertà di tecnologie cambiano in seguito, se il prodotto che si sta utilizzando è inferiore in qualche modo.

ReSharper ha avuto una grande funzione per la creazione di classi wrapper. Creare una classe, aggiungere un membro che è il tipo che si desidera avvolgere .. poi innescare la generare delegati refactoring. Pick 'tutti i soggetti pubblici' e ci si va .. una classe avvolto.

esporre solo il sottoinsieme della loro funzionalità, che in realtà si sta utilizzando. Nel codice di avvolgimento, fornire interfacce in modo da poter prendere in giro.

Se si sta testando API Endeca come una forma di suite di regressione in modo che si possa più facilmente accettare nuove rilasciata di loro API, quindi vorrei solo test di scrittura ad un livello piu 'accettazione'; l'esercizio del API ti danno. Ma ancora una volta, provare solo i modi in realtà si sta usando il loro API.

I avrebbe fatto l'approccio di cui sopra, tuttavia ...

TypeMock vi permetterà di classi finte senza interfacce, in modo che possa consentire a un altro approccio.

Spero che questo aiuti.

Altri suggerimenti

classi più Endeca sono concrete per cui è difficile fare test di unità, nel nostro ultimo progetto, dobbiamo noi stessi definito un livello astratto, esattamente era uno strato di facciata tra il nostro codice e Endeca API per esempio IEndecaQuery. Con questo livello di astrazione che potremmo fare un test rapidamente senza alcun reale accesso Endeca, sai l'apertura di una connessione Endeca vi costerà diversi secondi ogni volta. E 'stato un sacco di lavoro per attuare tutte le necessarie oggetti falsi Endeca. La nostra applicazione è stato un sito e-commerce e abbiamo utilizzato Endeca per tutti listino prodotti, le funzioni di ricerca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top