鉴于以下(基本)服务门面类,我想要一些关于单元测试应该和值得写的建议和指导。我使用MEF进行依赖注入,使用AutoMapper将数据协定的对象到对象映射到域对象,反之亦然。
public sealed class MyServiceFacade
{
[ImportingConstructor()]
public MyServiceFacade(IDependency dependency,
IMappingEngine mappingEngine)
{
if (dependency == null)
throw new ArgumentNullException("dependency");
if (mappingEngine == null)
throw new ArgumentNullException("mappingEngine");
Dependency = dependency;
MappingEngine = mappingEngine;
}
public IDependency Dependency { get; private set; }
public IMappingEngine MappingEngine { get; private set; }
public ResponseContract TheMethod(RequestContract requestContract)
{
// Verify parameters
if (requestContract == null)
throw new ArgumentNullException(requestContract);
// Translate parameter values
var request = MappingEngine.DynamicMap<Request>(requestContract);
// Delegate to the domain layer
var response = Dependency.DoSomethingWith(request);
// Translate the response
var responseContract = MappingEngine.DynamicMap<ResponseContract>(response);
// Return the response
return responseContract;
}
}
我希望看到良好的代码覆盖率,但不想编写无用/有效的测试。
(关于有效整合测试的建议也会有所帮助。)
你的想法?
更新
基于有限的回答,我认为我继续通过描述我认为是“最坏情况”的情景来引导对话(我试图最初避免的事情)。
我的团队中的一位开发人员是“白盒子”单元测试的强力倡导者,尽可能多地进行代码覆盖。由于他的方法,我们有以下测试:
正如您所看到的,这会导致大量测试真正测试实现,并且不会反映更高级别的要求(表中的另一种方法)。
这是你接近测试的方式,还是你会走另一条路?