【问题标题】:Run unit test project on VS changes the Application information在 VS 上运行单元测试项目更改应用程序信息
【发布时间】:2023-03-20 12:00:01
【问题描述】:

我正在尝试在 Visual Studio c# Form Solution 上运行单元测试,它使用另一个项目,我们将此项目称为 A。 项目 A 根据我在项目 Assembly Information 中指定的 Application.CompanyName 从 Windows 注册表中提取数据。 在运行项目 A 时,我得到了我在项目 A 程序集信息中指定的公司名称。 但是当我运行单元测试时,我得到“Microsoft Corporation”,无论我在单元测试项目中指定的公司名称是什么。

我不确定为什么会发生这种情况以及如何解决这个问题。

【问题讨论】:

    标签: c# .net visual-studio unit-testing


    【解决方案1】:

    当您运行驻留在项目 A 中的应用程序时,您正在运行使用您的应用程序信息构建的可执行文件,因此根据您的规范命名。

    但是,当您执行单元测试时,正在运行的应用程序不是您的应用程序,而是单元测试运行程序,它对您来说看起来像是 MSTest,因为它正在输出 Microsoft。

    考虑一下您在这里实际想要实现的目标。也许将提供运行时应用程序信息的东西分解到一个可模拟的类中,然后检查单元测试中模拟项返回的值是否被拾取并按照您期望的方式使用。

    作为一般的单元测试技巧,任何与底层操作系统(应用程序信息、文件系统、日期/时间等)交互的东西都最好被模拟,因为这是易失性信息,也不值得像操作系统开发人员那样进行测试已经为您完成了。

    【讨论】:

    • 谢谢!我已经阅读了有关 mockable 的内容,现在了解您的观点和提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2015-02-24
    • 2012-06-27
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多