/** * {@inheritDoc} * * @see DefaultDataProviderMethodResolver */ @Override public List<Method> resolve(DataProviderResolverContext context) { checkNotNull(context, "'context' must not be null"); List<Method> dataProviderMethods = findAnnotatedMethods(context.getLocations(), context.getDataProviderAnnotationClass()); List<Method> result = new ArrayList<Method>(); for (Method dataProviderMethod : dataProviderMethods) { if (context.useDataProviderNameConvention()) { if (isMatchingNameConvention(context.getTestMethod().getName(), dataProviderMethod.getName())) { result.add(dataProviderMethod); } } else if (dataProviderMethod.getName().equals(context.getDataProviderName())) { result.add(dataProviderMethod); } } return result; }
@Test public void testUseDataProviderNameConventionShouldReturnTrueIfDatProviderIsUseConvention() { // Given: final String dataProviderName = DataProviderResolverContext.METHOD_NAME_TO_USE_CONVENTION; DataProviderResolverContext underTest = new DataProviderResolverContext(testMethod, resolverClasses, resolveStrategy, locations, dataProviderAnnotationClass, dataProviderName); // When: boolean result = underTest.useDataProviderNameConvention(); // Then: assertThat(result).isTrue(); }
@Test public void testUseDataProviderNameConventionShouldReturnFalseIfDataProviderNameIsSet() { // Given: final String dataProviderName = "dataProviderName"; DataProviderResolverContext underTest = new DataProviderResolverContext(testMethod, resolverClasses, resolveStrategy, locations, dataProviderAnnotationClass, dataProviderName); // When: boolean result = underTest.useDataProviderNameConvention(); // Then: assertThat(result).isFalse(); }
@Test public void testResolveShouldReturnListContainingExplicitelySpecifiedDataProviderMethod() { // Given: final Method method2 = Methods.getMethod(this.getClass(), "dataProviderMethod"); final Method method3 = Methods.anyMethod(); doReturn(asList(method, method2, method3)).when(underTest).findAnnotatedMethods( ArgumentMatchers.<List<Class<?>>>any(), ArgumentMatchers.<Class<? extends Annotation>>any()); when(context.useDataProviderNameConvention()).thenReturn(false); when(context.getDataProviderName()).thenReturn("dataProviderMethod"); // When: List<Method> result = underTest.resolve(context); // Then: assertThat(result).containsOnly(method2); }
@Test public void testResolveShouldReturnListContainingOnlyConventionMatchingDataProviderMethods() { // Given: final Method method2 = Methods.anyMethod(); final Method method3 = Methods.anyMethod(); doReturn(asList(method, method2, method3)).when(underTest).findAnnotatedMethods( ArgumentMatchers.<List<Class<?>>>any(), ArgumentMatchers.<Class<? extends Annotation>>any()); doReturn(false).doReturn(true).doReturn(true).when(underTest).isMatchingNameConvention(any(String.class), any(String.class)); when(context.useDataProviderNameConvention()).thenReturn(true); when(context.getTestMethod()).thenReturn(Methods.anyMethod()); // When: List<Method> result = underTest.resolve(context); // Then: assertThat(result).containsOnly(method2, method3); }