Come testare un'unità una classe che è solo un adattatore che registra input e output in una libreria di terze parti?

1

Ho il seguente (in C #, ma la domanda potrebbe anche applicarsi a Java):

public interface ILibraryAdapter
{
    string Property1 { get; }
    string Method1(string param1);
    ...
}

public class ThirdPartyLibrary : ILibraryAdapter
{
    private readonly ThirdPartyClass thirdPartyClass;
    private readonly ILog log;

    public ThirdPartyLibrary(ThirdPartyClass thirdPartyClass, ILog log)
    {
        this.thirdPartyClass = thirdPartyClass;
        this.log = log;
    }

    public string Property1
    {
        get
        {
            log.Trace("ThirdPartyClass.get_Property1()");
            var result = thirdPartyClass.Property1;
            log.Trace(string.Format("ThirdPartyClass.get_Property1() returned {0}", result));
            return result;
        }
    }

    public string Method1(string param1)
    {
        log.Trace(string.Format("ThirdPartyClass.Method1({0})", param1));
        var result = thirdPartyClass.Method1(param1);
        log.Trace(string.Format("ThirdPartyClass.Method1({0}) returned {1}", param1, result));
        return result;
    }

    ...
}

dove ... rappresenta più di proprietà e metodi che vengono avvolti e registrati (circa due dozzine totali).

Le chiamate separate al registratore in ogni metodo sono parte dei requisiti.

Come dovrei unità testare questa classe?

Nota: i nomi delle proprietà e dei metodi della classe di terze parti non sempre corrispondono ai nomi delle proprietà e dei metodi di ILibraryAdapter.

    
posta cubetwo1729 04.06.2013 - 04:17
fonte

1 risposta

4

Se stavo scrivendo un test per questo in Java, userei una libreria di simulazione (come Mockito) e creare un'istanza fittizia di ThirdPartyClass (e probabilmente l'istanza di ILog). Quindi creerò un'istanza di ThirdPartyLibrary, passando gli oggetti mocked.

Dopo averlo, chiama i metodi che vuoi testare e verifica che l'interazione con gli oggetti derisi sia ciò che ti aspetti.

    
risposta data 04.06.2013 - 05:51
fonte

Leggi altre domande sui tag