Unit testing 识别';有效';服务外观的单元测试
考虑到以下(基本)服务facade类,我想要一些关于单元测试应该和值得编写的内容的建议和指导。我使用MEF进行依赖项注入,使用AutoMapper将我的数据契约映射到域对象,反之亦然Unit testing 识别';有效';服务外观的单元测试,unit-testing,testing,integration-testing,Unit Testing,Testing,Integration Testing,考虑到以下(基本)服务facade类,我想要一些关于单元测试应该和值得编写的内容的建议和指导。我使用MEF进行依赖项注入,使用AutoMapper将我的数据契约映射到域对象,反之亦然 public sealed class MyServiceFacade { [ImportingConstructor()] public MyServiceFacade(IDependency dependency, IMappingEngin
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;
}
}
公共密封类MyServiceFacade
{
[导入构造函数()]
公共MyServiceFacade(IDependency dependency,
IMappingEngine映射引擎)
{
if(依赖项==null)
抛出新的ArgumentNullException(“依赖项”);
if(mappingEngine==null)
抛出新的ArgumentNullException(“mappingEngine”);
依赖=依赖;
MappingEngine=MappingEngine;
}
公共IDependency依赖项{get;private set;}
公共IMappingEngine映射引擎{get;private set;}
公共响应契约方法(请求契约请求契约)
{
//验证参数
if(requestContract==null)
抛出新的ArgumentNullException(requestContract);
//转换参数值
var request=MappingEngine.DynamicMap(requestContract);
//委托给域层
var response=Dependency.DoSomethingWith(请求);
//翻译回应
var responseContract=MappingEngine.DynamicMap(响应);
//返回响应
返回响应跟踪;
}
}
我希望看到良好的代码覆盖率,但不希望编写无用/无效的测试
(关于有效集成测试的建议也会有所帮助。)
你的想法
更新
基于有限的反应,我认为我会通过描述我所认为的“最坏的情况”来进一步引导对话(我最初试图避免的事情)。
我团队中的一位开发人员大力提倡“白盒”单元测试,并尽可能多地覆盖代码。根据他的方法,我们将进行以下测试:
我过去常常建议进行一系列基本测试,以提供良好的覆盖范围。您的问题相当模糊。你能说得更具体一些吗?不过测试中的等价划分有一些缺点。它没有正确地检查边界条件。纪尧姆说:“而不是使用这样的技术,我用我的大脑来决定需要多少单元测试,以及他们应该做些什么:”因为这是一个漫长的一周,我不认为你的评论是侮辱性的,并要求你们两个提供更多的有形的细节。虽然我想了解这种方法背后的思维过程,我不是在寻找计算机科学课程,而是将代码示例放在原始帖子中,以便有具体的内容作为回应的基础。这是我所在组织中的一个典型用例,它在应该测试什么和应该测试什么方面引起了大量的讨论和意见分歧。我的帖子的目的是向广大读者开放这篇文章,看看整个社区对这个话题有什么看法。哦,对不起,我意识到这听起来一定很刺耳,这根本不是我的本意(英语不是我的自然语言),所以如果这听起来像是侮辱,我真的很抱歉,我知道这是一次公开的讨论,我只是想说,我没有遵循任何特定的哲学来决定编写什么测试。再次道歉:(@guillome:equivalence partitioning是一种“使用你的大脑”的方法。但它不是随机选择测试用例,而是一种更系统的方法来选择“值得编写”的测试用例。