我有以下内容(在C#中,但这个问题也适用于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;
}
...
}其中,...表示更多要包装和记录的属性和方法(大约有20多个属性和方法)。
每个方法中对记录器的单独调用都是需求的一部分。
我该如何对这门课进行单元测试?
注意:第三方类的属性和方法的名称并不总是与ILibraryAdapter的属性和方法的名称相匹配。
发布于 2013-06-04 03:51:28
如果我要用Java编写一个测试,我将使用一个模拟库(比如Mockito)并创建一个ThirdPartyClass的模拟实例(可能还有ILog实例)。然后,我将创建一个ThirdPartyLibrary实例,传入模拟对象。
一旦有了,就调用要测试的方法,并验证与模拟对象的交互是否符合您的预期。
https://softwareengineering.stackexchange.com/questions/200334
复制相似问题