2011-09-14 98 views
1

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

澄清,我有这样

  • TestSpam.java
  • TestEgg.java
  • TestBacon.java

这是所有测试我的界面IBreakfast的不同势方面的设置,我会让他们组织一个名为TestBreakfast的套件。我希望所有不同的测试都能以特定的方式执行特定的实现,最好是在套件上进行一次。

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

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

回答

2

在这种情况下,我已经多次落户到类似以下的模式:

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

谢谢,但你会如何去扩展到测试套件?我真的想避免所有测试类的子类。 – keis

+0

澄清:您试图以编程方式为每个接口的实现创建包含'TestSuite'实例的父'TestSuite'。你想通过反射来完全找到实现,还是想为'TestSuite'的构造函数提供一个类名/类实例列表? –

+0

对不起,如果我不清楚,澄清更新了原来的问题。所以不,这不是我在这之后的事。反思与否并不重要,但我认为通过一个实例会更容易 – keis

相关问题