我试图在Visual Studio c#Form Solution上运行单元测试,它使用另一个项目,让我们调用这个项目A. 项目A根据我在项目装配信息中指定的Application.CompanyName从Windows注册表中提取数据。 在运行项目A时,我获得了项目A程序集信息中指定的公司名称。 但是,当我运行单元测试时,我得到了#34; Microsoft Corporation",无论我在单元测试项目中指定了哪个公司名称。
我不确定为什么会这样,以及如何克服这个问题。
答案 0 :(得分:1)
当您运行位于项目A中的应用程序时,您正在运行使用您的应用程序信息构建的可执行文件,因此根据您的规范命名。
但是,当您执行单元测试时,正在运行的应用程序不是您的应用程序,而是单元测试运行程序,在您输出Microsoft时,它看起来像是MSTest。
考虑一下你在这里想要实现的目标。也许可以将提供运行时应用程序信息的内容分解为可模拟的类,并检查单元测试中模拟项返回的值是否被选中并使用了预期它的使用方式。
作为一般的单元测试提示,任何与底层操作系统交互的内容(应用程序信息,文件系统,日期/时间等)最好被模拟,因为这是易失性信息,也不值得测试,因为操作系统开发人员应该已经为你做了这件事。