我正在开始编码,我发现了有关在另一个项目中实现方法的问题。
例如,在这段代码中,我可以在我的项目CreateECAsDefinitions中使用在CreateECASPageObject中使用的方法,但是我知道如果我在此类中使用extends,那么我也可以使用这些方法。我很困惑。
我可以使用如下方法: 以下项目中的IngresarECAs.FirstMethod();
使用扩展和我使用的方式是否相同?
public class CreateECAsDefinitions {
private LectorExcel excel;
private static XSSFSheet hoja;
private int fila;
@Before
public void before(Scenario scenario) {
this.scenarioActual = scenario;
}
@Steps
private CreateECAsPageObject IngresarECAs ;
private ValidacionCasosPageObject validacionCasos;
我想知道我放的有什么区别
private CreateECASPageObject IngresarECAs;
或输入以下内容:
public class CreateECAsDefinitions extends CreateECASPageObject
在一开始。
答案 0 :(得分:4)
这与实现方法没有什么不同。这就是composition and inheritance
之间的区别如果不需要或不需要CreateECAsDefinitions
或继承 CreateECASPageObject
的所有可访问字段和方法,则不应使用extends
。换句话说,您通过“组合”而不是“继承”隐藏了可能的父类的功能。
鉴于您尚未显示方法定义,因此很难说出在您的情况下应该采用哪种方法,但是如果发现自己为CreateECAsPageObject
类中的每个方法编写此模式,则可能想再使用继承。
private CreateECAsPageObject ingresarECAs ;
public void firstMethod() {
ingresarECAs.firstMethod();
}
答案 1 :(得分:0)
您问继承与组成之间的区别。这是一个广泛的主题。
继承(extends
关键字)和组合(类中的private
实例字段)是在两个类之间设置依赖项的两种不同方法。
一般的习惯用法是偏向于组合而不是继承,因为组合在可能性方面更为灵活(例如,您可以组合多个字段,但继承一个类),并且减少了两个类之间的耦合。但是在某些情况下,继承对于减少样板代码(重复代码)或冗长是有意义的。
在继承的情况下,您编写firstMethod()
,在组合的情况下,您必须编写ingresarECAs.firstMethod()
。在这种简单的情况下,很难以第一种或第二种方式发现巨大的设计优势。
但是在某些情况下,定义基本测试类可能会迫使其他测试类依赖相同的逻辑。
因此,我绝对可以认为您应该考虑自己的要求,并根据需要在继承和组合之间的正确位置设置光标。