有没有办法在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) 个答案