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.