有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

有没有办法在io中重写getDescription()。黄瓜朱尼特。黄瓜5.0.0之后的java?

我正在尝试将现有项目从3.0.2升级到5.5.0。该项目在Cucumber中有一个getDescription()的自定义实现。java runner类,并且必须维护该功能,因为它在其他项目中具有依赖性。JUnit版本是4.12

在3.0.2中,黄瓜。java runner类在cucumber.api.junit.Cucumber中定义为

public class Cucumber extends ParentRunner<FeatureRunner>

这使得定制跑步者非常简单:

public class DescriptiveCucumberRunner extends Cucumber
{
    public DescriptiveCucumberRunner(Class<?> testClass) throws InitializationError, IOException
    {
        super(testClass);
    }

    @Override
    public Description getDescription()
    {
        String text = "Cucumber tests running on " + new Date();
        Description originalDescription = super.getDescription();
        Description newDescription = originalDescription.childlessCopy();
        newDescription.addChild(Description.createSuiteDescription(text));

        for(Description childDescription : originalDescription.getChildren())
        {
            newDescription.getChildren().get(0).addChild(childDescription);
        }
        return newDescription;
    }
}

在5.0.0中,黄瓜。java runner类被移动到io.cucumber.junit.Cucumber,定义被更改为

public final class Cucumber extends ParentRunner<ParentRunner<?>>

所以我不能再继续了

我试过扩展org.junit.runners.ParentRunner

public class DescriptiveCucumberRunner extends ParentRunner<Cucumber>

和一个代理聚合,但因为。java的方法受到保护,我必须复制整个类才能保留当前的功能,这根本不是一个解决方案。我可以使用反射来调用Cucumber中定义的方法。java,但这看起来也不是很干净

有人知道如何做到这一点而不需要在其他项目中进行更改吗?也许有一种我不知道的用黄瓜做的方法?希望我只是错过了一个明显的解决方案,但到目前为止我还是空白


共 (0) 个答案