解决 JUnit 5 中的 ParameterResolutionException 异常
1、概览 JUnit 5 引入了一些强大的功能,包括支持参数化测试(parameterized testing)。编写参数化测试可以节省大量时间,而且在许多情况下,只需简单组合注解就能启用参数化测试。
然而,错误配置可能会导致难以调试的异常,例如:ParameterResolutionException。
org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter ... 本文将带你了解如何解决 ParameterResolutionException 异常。
2、JUnit 5 的 ParameterResolver 异常信息中表示缺少 ParameterResolver。
这是 JUnit 5 中引入的 ParameterResolver 接口,允许开发人员扩展 JUnit 的基本功能,编写可接受任何类型参数的测试。
来看一个简单的 ParameterResolver 实现:
public class FooParameterResolver implements ParameterResolver { @Override public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { // 是否支持参数类型的逻辑 } @Override public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { // 参数解析逻辑 } } 该类有两个主要方法:
supportsParameter():确定是否支持参数类型 resolveParameter():返回执行测试的参数 因为 ParameterResolutionsException 是在没有 ParameterResolver 实现的情况下抛出的,所以先不关心实现细节。首先来看看异常的一些潜在原因。