gpt4 book ai didi

java - 子类可以修改 Java 中抽象父类(super class)中静态方法的行为吗?

转载 作者:行者123 更新时间:2023-11-30 05:01:43 25 4
gpt4 key购买 nike

我正在使用“参数化”运行器来执行一些测试。我正在从 XML 文件生成测试数据。这很好用。

现在我想将此行为应用于多个测试类,而不必复制测试数据生成代码。因此,我创建了一个抽象类,它负责从“一个”XML 文件填充测试数据。如果子类可以告诉使用哪个 XML 文件,我就实现了我的目标。

但我一直无法找到一种方法来做到这一点。

这是我的 super 类

@RunWith(Parameterized.class)
public abstract class AbstractXMLDrivenTest{
@@Parameters
public static Collection<Object[]> generateData () {
/* Reads an XML File and returns test input data */
}
}

这是一个子类

public class TestSomeThing extends AbstractXMLDrivenTest {
public TestSomeThing(args) {
/* Args are populated by generateData in superclass */
}
}

如果我在 AbstractXMLDrivenTest 中使用用于 TestSomething 的 XML 文件,则效果很好。我希望 XML 文件由子类(即 TestSomething)定义,以便我也可以将父类(super class)与其他测试用例一起使用。我希望现在一切都清楚了。

最佳答案

Java 中的静态方法没有继承。而且,无论静态方法的类是否是抽象的,对于静态方法来说都没有区别——类只具有静态方法的作用域函数。

为了使用继承,请使用非静态方法。这样您就可以从子类非静态方法或非静态字段中提取 XML 文件名。

关于java - 子类可以修改 Java 中抽象父类(super class)中静态方法的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com