在 Visual Studio 中,我有一个单元测试,它调用另一个项目中的类的方法 - 我们将其称为 MyClass.A()。
在 A() 内部,它访问 MyClass 项目属性中的设置。
当我在正常运行时使用 MyClass.A() 时,它从设置中获取正确的值。但是,当我从单元测试中执行此操作时,它返回 null。我是否需要在单元测试项目中进行构建后事件来复制设置?
这是在 MyClass.A() 中访问设置的方式:
string connectionString = global::DataAccess.Properties.Settings.Default.ConnectionString;
解决方案
所以这个问题与那堆腐烂的湿卫生纸有关,我喜欢称之为我的大脑。 MyClass 上有一个公共(public)属性,我需要使用连接字符串进行设置。 Set 访问器将值分配给适当的 Settings 属性。感谢大家的回复。
最佳答案
您实际上有 2 个选择,首先您可以将设置设为公开
,而不是内部
。
其次,您可以添加 InternalsVisibleToAttribute到指定单元测试程序集的主程序集。
[assembly:InternalsVisibleTo("MyUnitTestLibrary")]
顺便说一句,您应该使用 ConnectionStringsSection 将连接字符串存储在 app.config 中。并使用ConfigurationManager阅读它。
关于.net - 单元测试无法访问另一个项目中的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587778/