gpt4 book ai didi

delphi - 如何使用 DUnit 测试 Singleton 类?

转载 作者:行者123 更新时间:2023-12-03 15:03:44 24 4
gpt4 key购买 nike

或者使用其他设计模式更好?

最佳答案

前几天回复过类似问题here, mocking a Singleton 。原始帖子适用于 C#.Net 关于模拟单例行为的内容,但仍应适用。

关于单例模式,它本身并没有什么问题——在很多情况下我们希望集中逻辑和数据。然而,单例和静态类之间有很大的区别。将您的单例构建为静态类硬编码,以实现应用程序中的每个使用者 - 这使得单元测试非常困难!

您想要做的是为您的单例定义一个接口(interface),公开供您的消费者使用的方法。反过来,无论是谁实例化您的消费者,都会传递对实现类的引用[通常这是您的应用程序,或者如果您熟悉依赖注入(inject)\控制反转,则为容器]。

正是这个框架,无论谁实例化消费者,都负责确保只有一个实例在 float 。从静态类到接口(interface)引用实际上并不是那么大的飞跃[如上面的链接所示],你只是失去了全局可访问实例的便利 - 我知道我知道,全局引用非常诱人,但卢克转过身去黑暗面,你也可以!

一般来说,最佳实践建议避免静态引用,并鼓励针对接口(interface)进行编程。请记住,仍然可以在这些约束下应用单例模式。遵循这些准则,您应该没有问题对您的工作进行单元测试:)

希望这有帮助!

<小时/>

singleton != public static class,而不是singleton == single instance

关于delphi - 如何使用 DUnit 测试 Singleton 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1626556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com