dav*_*avy 5 testing tdd mocking linq-to-xml
我在Visual Studio 2010中的MVC4 Web API应用程序中使用XDocument,并且不确定测试策略.
我的大多数单元测试都使用内存中的XDocument,它适用于控制器,服务和存储库测试.
但是,我有XDocument.Load(filename)和XDocument.Save(filename)场景,我想测试(使用单元测试或集成测试).
我一直在寻找以下问题\回答关于所以在这里,但我不知道如何着手.
public class PathProvider
{
public virtual string GetPath()
{
return HttpContext.Current.Server.MapPath("App_Data/policies.xml")
}
}
PathProvider pathProvider = new PathProvider();
XDocument xdoc = XDocument.Load(pathProvider.GetPath());
Run Code Online (Sandbox Code Playgroud)
所以,我得到了我现在可以模拟调用XDocument.Load(pathProvider.GetPath())的任何调用.
我应该尝试测试PathProvider的工作原理吗?如果,那么,我将如何处理这个问题?
谢谢
戴维
然后我应该尝试测试 PathProvider 是否有效?如果是这样,我将如何处理这个问题?
我的答案是否定的,至少从一开始就不是自动化测试。
仅仅由于您提供的代码片段,PathProvider 是 ASP.NET 框架的包装器(适配器)。我在这里依赖的唯一测试是协作测试,例如,我将验证 GetPath() 是否在您期望的时候被调用。话虽这么说,上下文是关键。
PathProvider pathProvider = new PathProvider();
XDocument xdoc = XDocument.Load(pathProvider.GetPath());
Run Code Online (Sandbox Code Playgroud)
上面的代码散发着“测试框架”的味道,因此我什至懒得对这样的代码进行单元测试。如果您确实想确保这部分代码对 XML 文件等执行正确的操作,我会回退到集成测试。但请考虑这可能会很慢而且很脆弱。
因此,我的解决方案是抽象出正在加载的 XML 文档的概念,就像使用 PathProvider 一样。从这里开始,手动测试就足够了。在此过程中,如果此类适配器中包含任何域逻辑,我将提取您可以单独测试的类/方法,而无需担心 XML 或文档加载等...
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |