为抽象的Java类创建一个JUnit测试用例?

时间:2013-05-21 09:42:35

标签: java testing junit abstract-class subclass

我必须为具有多个抽象类和方法的应用程序开发JUnit测试用例。是否有可能为抽象类创建JUnit测试用例而不被另一个类扩展? 如果子类扩展了一个抽象类,那么它是否足以测试子类?如何为抽象类的非抽象方法创建测试用例?

4 个答案:

答案 0 :(得分:4)

由于无法创建抽象类的实例,因此必须使用派生类来测试它。您可以创建一个非常简单的类来扩展抽象类以进行测试。测试时确保子类用于测试抽象类中需要测试的所有方法。

答案 1 :(得分:1)

以下是我将如何处理这个......

  • 在测试中创建一个protected方法,该方法返回名为abstract
  • getInstance()类的实例
  • 使用上面链接中建议的解决方案(测试类,模拟或某些默认实例的实现)来实现这一点。
  • 从您的getInstance() / setup方法调用@Before方法,以填充将用于测试的字段

这种方法允许您在测试扩展抽象类的类时重用这组测试。您可以通过对具体类进行测试来扩展抽象类的测试并覆盖getInstance方法以返回具体类的实例。

答案 2 :(得分:0)

你可以像Kevin Bowersox所说的那样做,或者你也可以使用一些模拟框架。

例如:Using Mockito to test abstract classes

答案 3 :(得分:0)

在抽象方法中使用您想要的任何实现的匿名类。