【发布时间】:2013-09-06 06:19:36
【问题描述】:
我有一个基础测试类,它有一个方法(比如 ABC())和一个需要由子类实现的属性(比如 Prop1) ,如果没有被子类实现,则抛出“未实现”异常——没关系。
我已将此 ABC() 方法标记为 [TestMethod]。
现在这个方法只能由从这个派生的子类执行,而不是从基类类本身执行。即这个方法应该只对子类而不是基类本身执行。
真正的问题是什么..
我怎样才能确保这个方法不应该从基类执行??
提前致谢:)
【问题讨论】:
-
这听起来像是一个非常奇怪的测试设计。你能解释一下设计决策吗?可能另一种方法会更好——比如从你的基类抽象开始。
-
好吧,如果对象是子类的类型,那么如果它们覆盖父类(当然默认情况下),它将使用子类方法和属性。但是如果父母只是充满
not implemented exceptions,为什么还要有父母和孩子。为什么不只上一节课?您还指定了java、C++和.net,因此不同语言之间会有所不同。 -
Nicolas Tyler:它在 C#.Net 中
-
嗨乔恩:设计就像-我有一个需要为许多类执行的通用方法。为此,我创建了 1 个实现了此通用方法的基类,并且所有子类都派生自此基类 n 创建了自己的测试方法。现在为了确保所有子类都派生自这个基类,我在基类中放置了一个需要在子类中实现的必需属性。
-
Jon:我试图将这个基类和公共属性设为抽象,但在这种情况下,基测试方法只能从子类执行,而不是从基类执行,因为它从“不可执行”基类...希望我们对彼此有意义。 :)