在 Visual Studio 中使用了创建单元测试工具,显然它试图实例化我的抽象类。
我的问题是:我应该尝试按照 Visual Studio 推荐的方式进行单元测试吗?还是应该创建用于实例化的模拟类,或者仅测试使用此抽象类的方法?
谢谢。
在 Visual Studio 中使用了创建单元测试工具,显然它试图实例化我的抽象类。
我的问题是:我应该尝试按照 Visual Studio 推荐的方式进行单元测试吗?还是应该创建用于实例化的模拟类,或者仅测试使用此抽象类的方法?
谢谢。
有两种截然不同的观点:
我更喜欢第二个选项(目前)并使用RhinoMocks PartialMock 功能测试抽象类,它允许我创建一个抽象类的模拟对象。
只需测试实现类。
您可以始终创建一个特定的实现来进行测试,该实现不添加任何额外的功能。
听取测试结果。使用模拟工具来对抽象类和私有方法等进行测试是一种测试代码异味。
使用 mockrepository:
[testmethod]
public void testwithmockrepository()
{
var mockrepository = new rhino.mocks.mockrepository();
var mock = mockrepository.partialmock<myabstractclass>();
using ( mockrepository.record() )
{
expect.call( mock.dosomething( arg<string>.is.anything ) ).return( "hi..." ).repeat.once();
}
using ( mockrepository.playback() )
{
assert.areequal( "hi..." , mock.dosomething( "salam" ) );
}
}