【问题标题】:Tell mstest to ignore test methods in a base class but not in subclasses告诉 mstest 忽略基类中的测试方法,而不是子类中的测试方法
【发布时间】:2013-09-06 06:19:36
【问题描述】:

我有一个基础测试类,它有一个方法(比如 ABC())和一个需要由子类实现的属性(比如 Prop1) ,如果没有被子类实现,则抛出“未实现”异常——没关系。

我已将此 A​​BC() 方法标记为 [TestMethod]。

现在这个方法只能由从这个派生的子类执行,而不是从基类类本身执行。即这个方法应该只对子类而不是基类本身执行。

真正的问题是什么..

我怎样才能确保这个方法不应该从基类执行??

提前致谢:)

【问题讨论】:

  • 这听起来像是一个非常奇怪的测试设计。你能解释一下设计决策吗?可能另一种方法会更好——比如从你的基类抽象开始。
  • 好吧,如果对象是子类的类型,那么如果它们覆盖父类(当然默认情况下),它将使用子类方法和属性。但是如果父母只是充满not implemented exceptions,为什么还要有父母和孩子。为什么不只上一节课?您还指定了javaC++.net,因此不同语言之间会有所不同。
  • Nicolas Tyler:它在 C#.Net 中
  • 嗨乔恩:设计就像-我有一个需要为许多类执行的通用方法。为此,我创建了 1 个实现了此通用方法的基类,并且所有子类都派生自此基类 n 创建了自己的测试方法。现在为了确保所有子类都派生自这个基类,我在基类中放置了一个需要在子类中实现的必需属性。
  • Jon:我试图将这个基类和公共属性设为抽象,但在这种情况下,基测试方法只能从子类执行,而不是从基类执行,因为它从“不可执行”基类...希望我们对彼此有意义。 :)

标签: java c++ .net abstract


【解决方案1】:

在 C++ 中,您需要使 ABC() 成为纯虚函数:

virtual void ABC() = 0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多