【问题标题】:Parameter Resolvers clashing参数解析器冲突
【发布时间】:2020-07-01 20:54:55
【问题描述】:

我遇到了参数解析器冲突的问题。我得到的错误是ParameterResolutionException: Discovered multiple competing ParameterResolvers for parameter [the parameter]。这肯定是因为有一个基类扩展了ParameterResolver 的实现,因此我可以获取上下文来检查测试是否失败。

我的代码如下所示:

public class ExtensionContextResolver implements ParameterResolver {
    @Override
    public boolean supportsParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext) throws ParameterResolutionException {
        return true;
    }

    @Override
    public Object resolveParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext) throws ParameterResolutionException {
        return extensionContext;
    }
}

@ExtendsWith(ExtensionContextResolver.class)
public abstract class TestBase {
    private WebDriver driver;

    @AfterEach
    protected void afterEach(final ExtensionContext context) {
        // take screenshot using instance of driver in this class
}

public class MyTest extends TestBase {
    @ParameterizedTest
    @EnumSource(MyEnum.class)
    public void my_super_sweet_test(final MyEnum myEnum) {
        // the test
    }
}

我应该怎么做才能解决这个问题?有没有更好的方法来处理失败场景,同时仍然能够使用类中声明的字段?

编辑:更改测试名称

【问题讨论】:

    标签: selenium junit5


    【解决方案1】:

    您遇到的问题出现是因为您自己的ExtensionContextResolver 宣布解决任何类型的对象 - 它实际上没有。解决办法是在supportParameter宣布真正的作用域:

    class ExtensionContextResolver implements ParameterResolver {
        @Override
        public boolean supportsParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext) throws ParameterResolutionException {
            return parameterContext.getParameter().getType().equals(ExtensionContext.class);
        }
    
        @Override
        public Object resolveParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext) throws ParameterResolutionException {
            return extensionContext;
        }
    }
    

    这样异常就不会再发生了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      相关资源
      最近更新 更多