result.add(null); } else { for (Class<? extends DataProviderMethodResolver> resolverClass : useDataProvider.resolver()) { DataProviderMethodResolver resolver = getResolverInstanceInt(resolverClass);
result.add(null); } else { for (Class<? extends DataProviderMethodResolver> resolverClass : useDataProvider.resolver()) { DataProviderMethodResolver resolver = getResolverInstanceInt(resolverClass);
result.add(null); } else { for (Class<? extends DataProviderMethodResolver> resolverClass : useDataProvider.resolver()) { DataProviderMethodResolver resolver = getResolverInstanceInt(resolverClass);
@Test public void testValidateTestMethodsShouldAddErrorIfDataProviderMethodNotFoundForMethodWithUseDataProviderUsingOnlyDefaultResolver() { // Given: doReturn(asList(testMethod)).when(testClass).getAnnotatedMethods(UseDataProvider.class); doReturn(emptyList()).when(underTest).getDataProviderMethods(testMethod); doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn(new Class<?>[] { DefaultDataProviderMethodResolver.class }).when(useDataProvider).resolver(); List<Throwable> errors = new ArrayList<Throwable>(); // When: underTest.validateTestMethods(errors); // Then: assertThat(errors).hasSize(1); assertThat(errors.get(0).getMessage()) .contains("No valid dataprovider found for test 'testMethod' using the default resolver. By convention") .contains("or is explicitely set"); verifyZeroInteractions(testValidator); }
@Test public void testValidateTestMethodsShouldAddErrorIfDataProviderMethodNotFoundForMethodWithUseDataProviderUsingAdditionalCustomResolver() { // Given: doReturn(asList(testMethod)).when(testClass).getAnnotatedMethods(UseDataProvider.class); doReturn(Collections.emptyList()).when(underTest).getDataProviderMethods(testMethod); doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn(new Class<?>[] { null, DefaultDataProviderMethodResolver.class }).when(useDataProvider).resolver(); List<Throwable> errors = new ArrayList<Throwable>(); // When: underTest.validateTestMethods(errors); // Then: assertThat(errors).hasSize(1); assertThat(errors.get(0).getMessage()).contains("No valid dataprovider found for test 'testMethod' using custom resolvers: ") .containsIgnoringCase("[null, " + DefaultDataProviderMethodResolver.class + "]. Please examine"); verifyZeroInteractions(testValidator); }
@SuppressFBWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD") @Before public void setup() throws Exception { classSetupException = null; underTest = new DataProviderRunner(DataProviderRunnerTest.class); MockitoAnnotations.initMocks(this); underTest.dataConverter = dataConverter; underTest.testValidator = testValidator; underTest.testGenerator = testGenerator; doReturn(testClass).when(underTest).getTestClassInt(); doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn(anyMethod()).when(testMethod).getMethod(); doReturn("testMethod").when(testMethod).getName(); doReturn(UseDataProvider.DEFAULT_VALUE).when(useDataProvider).value(); doReturn(new Class<?>[] { DataProviderMethodResolver.class }).when(useDataProvider).resolver(); }
List<FrameworkMethod> dataProviderMethods = getDataProviderMethods(testMethod); if (dataProviderMethods.isEmpty()) { Class<? extends DataProviderMethodResolver>[] resolvers = testMethod.getAnnotation(UseDataProvider.class).resolver();
List<FrameworkMethod> dataProviderMethods = getDataProviderMethods(testMethod); if (dataProviderMethods.isEmpty()) { Class<? extends DataProviderMethodResolver>[] resolvers = testMethod.getAnnotation(UseDataProvider.class).resolver();
List<FrameworkMethod> dataProviderMethods = getDataProviderMethods(testMethod); if (dataProviderMethods.isEmpty()) { Class<? extends DataProviderMethodResolver>[] resolvers = testMethod.getAnnotation(UseDataProvider.class).resolver();
@Test public void testGetDataProviderMethodShouldReturnFirstNotEmptyListIfResolveStrategyIsUntilFirstMatchAndMultipleResolversWouldMatch() { // Given: final DataProviderMethodResolver resolver2 = mock(DataProviderMethodResolver.class); final DataProviderMethodResolver resolver3 = mock(DataProviderMethodResolver.class); final List<FrameworkMethod> expected2 = Arrays.asList(mock(FrameworkMethod.class), mock(FrameworkMethod.class)); final List<FrameworkMethod> expected3 = Arrays.asList(mock(FrameworkMethod.class)); doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn(new Class<?>[] { DataProviderMethodResolver.class, DataProviderMethodResolver.class, DataProviderMethodResolver.class }) .when(useDataProvider).resolver(); doReturn(ResolveStrategy.UNTIL_FIRST_MATCH).when(useDataProvider).resolveStrategy(); doReturn(dataProviderMethodResolver, resolver2, resolver3).when(underTest).getResolverInstanceInt(any(Class.class)); doReturn(emptyList()).when(dataProviderMethodResolver).resolve(testMethod, useDataProvider); doReturn(expected2).when(resolver2).resolve(testMethod, useDataProvider); doReturn(expected3).when(resolver3).resolve(testMethod, useDataProvider); // When: List<FrameworkMethod> result = underTest.getDataProviderMethods(testMethod); // Then: assertThat(result).containsExactlyElementsOf(expected2); assertThat(underTest.dataProviderMethods).containsEntry(testMethod, result); }
@Test public void testGetDataProviderMethodShouldReturnFirstNotEmptyListIfResolveStrategyIsAggregateAllMatchesAndMultipleResolversWouldMatch() { // Given: final DataProviderMethodResolver resolver2 = mock(DataProviderMethodResolver.class); final DataProviderMethodResolver resolver3 = mock(DataProviderMethodResolver.class); final List<FrameworkMethod> expected2 = Arrays.asList(mock(FrameworkMethod.class), mock(FrameworkMethod.class)); final List<FrameworkMethod> expected3 = Arrays.asList(mock(FrameworkMethod.class)); doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn(new Class<?>[] { DataProviderMethodResolver.class, DataProviderMethodResolver.class, DataProviderMethodResolver.class }) .when(useDataProvider).resolver(); doReturn(ResolveStrategy.AGGREGATE_ALL_MATCHES).when(useDataProvider).resolveStrategy(); doReturn(dataProviderMethodResolver, resolver2, resolver3).when(underTest).getResolverInstanceInt(any(Class.class)); doReturn(emptyList()).when(dataProviderMethodResolver).resolve(testMethod, useDataProvider); doReturn(expected2).when(resolver2).resolve(testMethod, useDataProvider); doReturn(expected3).when(resolver3).resolve(testMethod, useDataProvider); // When: List<FrameworkMethod> result = underTest.getDataProviderMethods(testMethod); // Then: assertThat(result).hasSize(3).containsAll(expected2).containsAll(expected3); assertThat(underTest.dataProviderMethods).containsEntry(testMethod, result); }
@Test public void testValidateTestMethodsShouldWorkCorrectlyForMultipleMethodsAnnotatedWithUseDataProvider() { // Given: FrameworkMethod testMethod2 = mock(FrameworkMethod.class); UseDataProvider useDataProvider2 = mock(UseDataProvider.class); FrameworkMethod dataProviderMethod2 = mock(FrameworkMethod.class); DataProvider dataProvider2 = mock(DataProvider.class); FrameworkMethod testMethod3 = mock(FrameworkMethod.class); UseDataProvider useDataProvider3 = mock(UseDataProvider.class); doReturn(asList(testMethod, testMethod2, testMethod3)).when(testClass).getAnnotatedMethods(UseDataProvider.class); doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn(asList(dataProviderMethod)).when(underTest).getDataProviderMethods(testMethod); doReturn(dataProvider).when(dataProviderMethod).getAnnotation(DataProvider.class); doReturn(useDataProvider2).when(testMethod2).getAnnotation(UseDataProvider.class); doReturn(asList(dataProviderMethod2)).when(underTest).getDataProviderMethods(testMethod2); doReturn(dataProvider2).when(dataProviderMethod2).getAnnotation(DataProvider.class); doReturn(useDataProvider3).when(testMethod3).getAnnotation(UseDataProvider.class); doReturn(emptyList()).when(underTest).getDataProviderMethods(testMethod3); doReturn(new Class<?>[] { DataProviderMethodResolver.class }).when(useDataProvider3).resolver(); List<Throwable> errors = new ArrayList<Throwable>(); // When: underTest.validateTestMethods(errors); // Then: assertThat(errors).hasSize(1); assertThat(errors.get(0).getMessage()).containsIgnoringCase("no valid dataprovider found for test"); verify(testValidator).validateDataProviderMethod(dataProviderMethod, dataProvider, errors); verify(testValidator).validateDataProviderMethod(dataProviderMethod2, dataProvider2, errors); verifyNoMoreInteractions(testValidator); }