Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将测试套件应用于接口的实现_Java_Interface_Junit - Fatal编程技术网

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

Java 将测试套件应用于接口的实现,java,interface,junit,Java,Interface,Junit,我有一个接口,有几个实现。 我正在为接口设置一个测试套件。现在我想为每个具体的实现者运行套件中的所有测试类 为了澄清,我有一个类似的设置 TestSpam.java TestEgg.java TestBacon.java 这些都在测试我界面的不同方面,我将把它们组织在一个名为say TestBreakfast的套件中。我希望所有不同的测试都以某种方式针对特定的实现运行,最好是一次,然后在套件中运行 在测试用例级别,我想我可以使用parametrise来运行所有的实现,但看起来并没有扩展到套件

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

为了澄清,我有一个类似的设置

  • TestSpam.java
  • TestEgg.java
  • TestBacon.java
这些都在测试我界面的不同方面,我将把它们组织在一个名为say TestBreakfast的套件中。我希望所有不同的测试都以某种方式针对特定的实现运行,最好是一次,然后在套件中运行

在测试用例级别,我想我可以使用parametrise来运行所有的实现,但看起来并没有扩展到套件。而且,当使用参数化时,看起来我必须硬编码那些感觉非常落后的实现


有什么办法可以让这一切顺利进行吗?

在这种情况下,我反复尝试以下模式:

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

谢谢,但您如何将其扩展到测试套件?我确实希望避免对所有测试类进行子类化。澄清一下:您试图通过编程方式为每个接口的实现创建一个包含
TestSuite
实例的父级
TestSuite
。您是想完全通过反射找到实现,还是想为您的
TestSuite
的构造函数提供类名/类实例的列表?如果我不清楚,很抱歉,更新了原始问题并进行了澄清。所以不,这不是我真正想要的。反射与否并不重要,但我假设传递一个实例easier@keis当前位置很抱歉,我脑子里有一篇关于这件事的帖子,但我还没来得及把它说出来。今晚有空的时候我可能会设法把它弄进去。不用担心。谢谢你的时间,非常感谢