2

在 Visual Studio 中,我有一个单元测试,它调用另一个项目中的类的方法 - 我们称之为 MyClass.A()。

在 A() 中,它访问 MyClass 的项目属性中的设置。

当我在正常运行时使用 MyClass.A() 时,它会从设置中获取正确的值。但是,当我从单元测试中执行此操作时,它返回 null。我是否需要单元测试项目中的构建后事件来复制设置?

这是在 MyClass.A() 中访问设置的方式:

string connectionString = global::DataAccess.Properties.Settings.Default.ConnectionString;

解析度

所以这个问题与我喜欢称之为我的大脑的湿卫生纸堆有关。MyClass 上有一个公共属性,我需要使用连接字符串进行设置。Set 访问器将值分配给适当的 Settings 属性。感谢所有的回复。

4

2 回答 2

2

如果您正在访问连接字符串,这实际上看起来不像是单元测试。您最好模拟依赖连接字符串的任何行为,以便隔离您的功能。看看这里的一些测试框架(我很喜欢 Moq)。

于 2012-11-27T16:10:39.140 回答
2

您实际上有 2 个选项,首先您可以进行设置Public而不是Internal.

其次,您可以将InternalsVisibleToAttribute添加到指定单元测试程序集的主程序集中。

[assembly:InternalsVisibleTo("MyUnitTestLibrary")]

附带说明一下,您应该使用ConnectionStringsSection将连接字符串存储在 app.config 中,并使用ConfigurationManager来读取它。

于 2012-11-27T16:04:18.793 回答