将测试套件应用于接口的实现

时间:2011-09-14 16:33:46

标签: java interface junit

我有一个存在多个实现的接口。 我正在为界面设置一个测试套件。现在我想从套件中为每个具体的实现者运行所有测试类。

澄清一下,我有一个像

这样的设置
  • TestSpam.java
  • TestEgg.java
  • TestBacon.java

这些都是测试我的界面IBreakfast的不同方面,我将把它们组织在名为TestBreakfast的套件中。并且我希望所有不同的测试都以某种方式指定的特定实现运行,最好是一次和开/关套件。

在测试用例级别,我认为我可以使用参数化来运行所有实现,但看起来并不像是扩展到套件。而且当使用参数时,看起来我不得不对那些感觉非常倒退的实现进行硬编码。

关于如何使这项工作的任何想法?

1 个答案:

答案 0 :(得分:2)

在这种情况下,我反复讨论如下模式:

  • 创建一个抽象类,用于测试接口的预期功能。
    • 此类应声明一个返回接口实例的抽象工厂方法。
    • 您的所有测试都应使用工厂方法返回的实例。
  • 为扩展此抽象类创建一个或多个类(每个实现一个)。
    • 通过返回适当的具体类来实现工厂方法。
    • 使用此具体测试类还可以测试特定于实现的功能。