在Visual Studio中,我有一个单元测试,它调用另一个项目中的类的方法 - 让我们称之为MyClass.A()。
在A()内部,它访问MyClass项目属性中的设置。
当我在正常运行时使用MyClass.A()时,它从设置中获取正确的值。但是,当我从单元测试中执行它时,它返回null。我是否需要在单元测试项目中进行构建后事件才能复制设置?
这是在MyClass.A()中访问设置的方式:
string connectionString = global::DataAccess.Properties.Settings.Default.ConnectionString;
解决
所以这个问题与我喜欢称之为大脑的一堆湿厕纸有关。我需要使用连接字符串设置MyClass上的公共属性。 Set访问器将值分配给相应的Settings属性。感谢所有回复。
答案 0 :(得分:2)
您实际上有2个选项,首先您可以设置Public
而不是Internal
。
其次,您可以将InternalsVisibleToAttribute添加到指定单元测试程序集的主程序集中。
[assembly:InternalsVisibleTo("MyUnitTestLibrary")]
另外,您应该使用ConnectionStringsSection将连接字符串存储在app.config中,并使用ConfigurationManager进行阅读。
答案 1 :(得分:2)
如果您正在访问连接字符串,这实际上看起来不像是单元测试。您可能最好嘲笑依赖于连接字符串的任何行为,以便您可以隔离您的功能。看看这里的一些test frameworks(我是Moq的伙伴)。