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



我有一个接口,它有几个实现。我正在为这个接口设置一个测试套件。现在我想为每个具体的实现者运行套件中的所有测试类。

澄清一下,我有一个类似

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

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

在测试用例级别,我认为我可以使用参数化来运行所有的实现,但看起来不像扩展到套件。而且当使用参数化时,看起来我必须硬编码实现,这感觉很糟糕。

你知道怎么做吗?

在这种情况下,我反复采用如下模式:

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

最新更新