我写了一个类做了一些事情,过了一段时间我发现许多其他类共享功能所以决定实现一个基类(C#中的抽象)并将所有共享放入其中。
由于无法实例化这样的类,那么如何调试它呢?
开发基类是否有任何实际考虑因素?
答案 0 :(得分:1)
如果您需要测试它,您可以执行以下两项操作之一:
1)您可以拥有非抽象的基类,因此可以实例化基础并进行测试。
2)在你的测试项目中,你可以在基础周围做一个模拟包装并测试模拟。
答案 1 :(得分:1)
因为无法实例化 这样一个类然后如何调试呢?
如果您正在询问如何实际测试它(即单元测试),我通常会编写一个继承自基类的测试类并以此方式进行测试。如果您询问实际调试,那么一旦您在正在运行的应用程序中使用子类实例化它,它与任何其他类没有什么不同。这有意义吗?
有任何实际考虑因素 用于开发基类?
多年来,我听说过两个学派:1)基础类中常见的任何内容; 2)如果它不是真正的继承,就不要创建基类。我倾向于为前者设计/编码,但#2确实有其优点,因为它可以在某种程度上使设计计数器直观。只是我的0.02美元......
答案 2 :(得分:1)
调试抽象类
没有什么能阻止您调试抽象类,在调试子类时,调试器会根据需要自动将您重定向到父类的实现。
设计类层次结构
虽然在.NET中继承很简单,但如果没有明确的类层次结构,很快就会难以维护。
继承并不是确保在OO中重复使用的唯一方法。
可能有所帮助的一些建议:
interfaces
可能是一个不错的选择)答案 3 :(得分:0)
我会创建一个模拟对象来继承新的抽象。您甚至可以使用模拟框架来执行此操作。
保持手头运行你的单元测试,除非你使用像Rhino Mocks(我个人最喜欢的模拟框架)这样的东西。
答案 4 :(得分:0)
要调试基类,请创建一个派生类的实例并通过它进行调试。
你也可以考虑创建另一个派生类,除了从基类继承之外什么都不做,所以你可以测试它。
答案 5 :(得分:0)
首先,它不需要是抽象的类继承它,如果它不是抽象的,你可以实例化它。否则只需在具体实现中调试它
答案 6 :(得分:0)
您可以在测试夹具组件中创建派生版本(我假设您是单元测试基础,因此需要单独实例化它),仅用于测试基类的功能。派生版本将提供测试基础所需的任何其他基础结构。您可以决定创建几个派生版本来测试抽象基础的不同方面。
答案 7 :(得分:0)
您可以使用从中继承的派生类来调试它。在调试时,您需要记住所做的任何更改,并检查所有派生类是否仍然共享所得到的行为。