gpt4 book ai didi

.net - 我可以实现一系列可重用的测试来测试接口(interface)的实现吗?

转载 作者:行者123 更新时间:2023-12-04 10:42:22 25 4
gpt4 key购买 nike

我正在用 C# 编写一系列集合类,每个集合类都实现了类似的自定义接口(interface)。是否可以为一个接口(interface)编写一个单元测试集合,并在几个不同的实现上自动运行它们?我想避免每个实现的任何重复测试代码。

我愿意研究任何框架(NUnit 等)或 Visual Studio 扩展来完成此任务。

对于那些想要做同样的事情的人,我发布了我的具体解决方案,基于 avandeursen's accepted solution ,如 an answer .

最佳答案

是的,这是可能的。诀窍是让您的单元类测试层次结构遵循代码的类层次结构。

假设您有一个接口(interface) Itf带有实现类 C1C2 .

您首先为 Itf 创建一个测试类(ItfTest)。要实际进行测试,您需要创建 Itf 的模拟实现。界面。

ItfTest 中的所有测试应该传递 Itf 的任何实现(!)。如果不是,您的实现不符合 Liskov Substitution Principle (Martin SOLID OO 设计原则中的“L”)

因此,要为 C1 创建一个测试用例, 你的 C1Test类可以扩展 ItfTest .您的扩展应该用创建 C1 来替换模拟对象的创建。对象(将其注入(inject)或使用 GoF factory method )。这样,所有ItfTest案例应用于 C1 类型的实例.此外,您的 C1Test类可以包含特定于 C1 的附加测试用例.
C2 也是如此.您可以对更深的嵌套类和接口(interface)重复该技巧。

引用:Binder的Polymorphic Server Test图案,
和麦格雷戈的PACT -- 组件测试的并行架构。

关于.net - 我可以实现一系列可重用的测试来测试接口(interface)的实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367673/

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