小编dne*_*ome的帖子

模拟对象 - 将所有方法声明为虚拟或使用接口?

在.net中,与Java不同,默认情况下方法不是虚拟的.为了使用大多数模拟对象框架,您必须在"真实"对象上将您想要在模拟上使用的方法标记为虚拟,或者您必须有一个可以模拟被测试的类的接口接受代替实施.

将每个方法标记为虚拟似乎是不好的形式,但是为每个类定义一个接口似乎也是不好的形式.

什么是最好的事情?

.net unit-testing mocking

12
推荐指数
2
解决办法
2297
查看次数

参考库中的ASP.NET相对路径

我有一个ASP.NET网站,我在其中从xml文件加载一些验证规则.此xml文件名没有路径信息,在库中进行了硬编码.(我知道硬编码名称并不好,但让我们在这个例子中使用它).

当我运行网站时,ASP.NET尝试在路径中找到xml 文件,其中名称为硬编码的C#文件是.这对我来说完全令人难以置信,因为我无法理解在运行时我们是如何考虑将源路径作为解析不合格文件名的可能性.

// the config class, in C:\temp\Project.Core\Config.cs
public static string ValidationRulesFile {
   get { return m_validationRulesFile; }
} private static string m_validationRulesFile = "validation_rules.xml";

// using the file name
m_validationRules.LoadRulesFromXml( Config.ValidationRulesFile, "Call" );
Run Code Online (Sandbox Code Playgroud)

以下是显示我们查找的路径与Config.cs相同的异常:

  Exception Details: System.IO.FileNotFoundException: 
Could not find file 'C:\temp\Project.Core\validation_rules.xml'.
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这个吗?我已经知道你应该如何处理ASP.NET中的路径,所以请不要回答解决方案.我真的很想理解这一点,因为它真的让我感到惊讶,而且它会让我感到困扰.

UPDATE

以下是LoadRulesFromXml的相关代码

public void LoadRulesFromXml( string in_xmlFileName, string in_type ) 
{       
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load( in_xmlFileName );
... 
Run Code Online (Sandbox Code Playgroud)

UPDATE2

看起来Cassini Web服务器获取VS设置的当前目录,实际上它设置为我的库项目的路径.我不确定VS究竟如何确定哪个项目用于路径,但这至少解释了发生了什么.谢谢乔.

c# asp.net path

5
推荐指数
1
解决办法
4776
查看次数

标签 统计

.net ×1

asp.net ×1

c# ×1

mocking ×1

path ×1

unit-testing ×1