【发布时间】:2011-10-28 06:33:29
【问题描述】:
如果 HostType 为 Moles,那么我无法通过 ConfigurationManager.AppSettings 获取数据
它在 2-3 个月前对我来说工作正常。但它不起作用,我所有的测试用例都失败了(引发了空引用异常)。
请帮我解决。谢谢。
【问题讨论】:
标签: unit-testing mstest moles pex-and-moles
如果 HostType 为 Moles,那么我无法通过 ConfigurationManager.AppSettings 获取数据
它在 2-3 个月前对我来说工作正常。但它不起作用,我所有的测试用例都失败了(引发了空引用异常)。
请帮我解决。谢谢。
【问题讨论】:
标签: unit-testing mstest moles pex-and-moles
这是 .Net 4.0 中 Moles 当前版本中的一个已知错误 - 您可以 Mole 配置管理器并让它返回您想要的值作为解决方法。
例如,这是我为 Linq To SQL DataContext 设置测试以在不连接到 SQL 的情况下获取默认构造函数的代码覆盖率的方式。
[TestInitialize]
[HostType("Moles")]
public void Setup()
{
MCodesConfigurationHelper.DataAccessSettingsGet = () =>
{
MCodesDataAccessSettings setting = new MCodesDataAccessSettings();
setting.DatabaseConnectionStringGet = () => { return "this is a connection string."; };
return setting;
};
MConfigurationManager.ConnectionStringsGet = () =>
{
MConnectionStringSettingsCollection strings = new MConnectionStringSettingsCollection();
strings.ItemGetString = (string connectionString) =>
{
var cstring = new MConnectionStringSettings();
cstring.ToString = () => { return connectionString; };
cstring.ConnectionStringGet = () => { return connectionString; };
return cstring;
};
return strings;
};
MDataContext.ConstructorString = (DataContext dataContext, string connection) => { };
}
[TestMethod]
[HostType("Moles")]
public void DefaultConstructorTest()
{
using (MyDataContext target = new MyDataContext())
{
Assert.IsNotNull(target);
}
}
【讨论】: