{"id":"994e7429add32343","repo":"junit-team/junit5","slug":"please-implement-providearguments-parameterdeclara","errorCode":null,"errorMessage":"Please implement provideArguments(ParameterDeclarations, ExtensionContext) instead.","messagePattern":"Please implement provideArguments\\(ParameterDeclarations, ExtensionContext\\) instead\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/ArgumentsProvider.java","lineNumber":61,"sourceCode":" * @see org.junit.jupiter.params.support.AnnotationConsumer\n */\n@API(status = STABLE, since = \"5.7\")\npublic interface ArgumentsProvider {\n\n\t/**\n\t * Provide a {@link Stream} of {@link Arguments} to be passed to a\n\t * {@code @ParameterizedTest} method.\n\t *\n\t * @param context the current extension context; never {@code null}\n\t * @return a stream of arguments; never {@code null}\n\t * @deprecated Please implement\n\t * {@link #provideArguments(ParameterDeclarations, ExtensionContext)} instead.\n\t */\n\t@Deprecated(since = \"5.13\")\n\t@API(status = DEPRECATED, since = \"5.13\")\n\tdefault Stream<? extends Arguments> provideArguments(@SuppressWarnings(\"unused\") ExtensionContext context)\n\t\t\tthrows Exception {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\"Please implement provideArguments(ParameterDeclarations, ExtensionContext) instead.\");\n\t}\n\n\t/**\n\t * Provide a {@link Stream} of {@link Arguments} to be passed to a\n\t * {@code @ParameterizedClass} or {@code @ParameterizedTest}.\n\t *\n\t * @param parameters the parameter declarations for the parameterized\n\t * class or test; never {@code null}\n\t * @param context the current extension context; never {@code null}\n\t * @return a stream of arguments; never {@code null}\n\t * @since 5.13\n\t */\n\t@API(status = MAINTAINED, since = \"6.0.2\")\n\tdefault Stream<? extends Arguments> provideArguments(ParameterDeclarations parameters, ExtensionContext context)\n\t\t\tthrows Exception {\n\t\ttry {\n\t\t\treturn provideArguments(context);","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/junit-team/junit5/blob/956246301e03d757539f7b76dd5a91f298637563/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/ArgumentsProvider.java#L43-L79","documentation":"Thrown by the deprecated default provideArguments(ExtensionContext) in the ArgumentsProvider interface (UnsupportedOperationException). It is reached when a custom ArgumentsProvider overrides neither the current 2-arg nor the legacy 1-arg method. Normally the 2-arg default catches this and rewraps it (see error 63), so end users usually see 63 instead.","triggerScenarios":"A custom ArgumentsProvider registered via @ArgumentsSource that provides no implementation of provideArguments; the 2-arg default delegates to the 1-arg default which throws UnsupportedOperationException.","commonSituations":"Newly created provider with an empty body; IDE auto-generated stubs that did not fill the method; upgrade from a pre-5.13 JUnit where the 1-arg method was the interface contract.","solutions":["Implement `Stream<? extends Arguments> provideArguments(ParameterDeclarations parameters, ExtensionContext context)` in the provider.","If extending AnnotationBasedArgumentsProvider, override the 3-arg variant instead.","Upgrade or pin JUnit to match the provider's expected contract."],"exampleFix":"// before\nclass MyProvider implements ArgumentsProvider { }\n\n// after\nclass MyProvider implements ArgumentsProvider {\n    @Override\n    public Stream<? extends Arguments> provideArguments(\n            ParameterDeclarations parameters, ExtensionContext context) {\n        return Stream.of(Arguments.of(1, 2));\n    }\n}","handlingStrategy":"validation","validationCode":"// Assert a custom ArgumentsProvider implements the current 2-arg contract.\nClass<? extends ArgumentsProvider> provider = MyProvider.class;\nboolean ok = Arrays.stream(provider.getMethods())\n    .anyMatch(m -> m.getName().equals(\"provideArguments\")\n        && m.getParameterCount() == 2\n        && !m.isDefault());\nif (!ok) {\n    throw new IllegalStateException(provider.getName()\n        + \" must override provideArguments(ParameterDeclarations, ExtensionContext)\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    // execute the parameterized test\n} catch (UnsupportedOperationException e) {\n    if (e.getMessage().contains(\"implement provideArguments\")) {\n        // add the 2-arg override to the provider\n    } else throw e;\n}","preventionTips":["Always override provideArguments(ParameterDeclarations, ExtensionContext) in custom providers.","Use @Override so the compiler rejects missing/incorrect signatures.","Keep providers' JUnit version aligned with the runtime version."],"tags":["junit","jupiter-params","arguments-provider","api-migration"],"analyzedSha":"956246301e03d757539f7b76dd5a91f298637563","analyzedAt":"2026-08-04T19:25:17.049Z","schemaVersion":2}