I have the following (in C#, but the question could also apply to 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;
}
...
}
where the ...
represents more of properties and methods being wrapped and logged (about two dozen total).
The separate calls to the logger in each method are part of the requirements.
How should I unit test this class?
Note: The names of the properties and methods of the third-party class do not always match the names of the properties and methods of ILibraryAdapter.