@Test @UseDataProvider("all") public void hasAlertStatus_returns_false_for_all_value_types_when_not_set(Measure measure) { assertThat(measure.hasQualityGateStatus()).isFalse(); }
/** * Returns the dataprovider method that belongs to the given test method or {@code null} if no such dataprovider * exists or the test method is not marked for usage of a dataprovider * <p> * This method is package private (= visible) for testing. * </p> * * @param testMethod test method that uses a dataprovider * @return the dataprovider or {@code null} (if dataprovider does not exist or test method does not use any) * @throws IllegalArgumentException if given {@code testMethod} is {@code null} */ FrameworkMethod getDataProviderMethod(FrameworkMethod testMethod) { if (testMethod == null) { throw new IllegalArgumentException("testMethod must not be null"); } UseDataProvider useDataProvider = testMethod.getAnnotation(UseDataProvider.class); if (useDataProvider == null) { return null; } TestClass dataProviderLocation = findDataProviderLocation(useDataProvider); List<FrameworkMethod> dataProviderMethods = dataProviderLocation.getAnnotatedMethods(DataProvider.class); return findDataProviderMethod(dataProviderMethods, useDataProvider.value(), testMethod.getName()); }
/** * {@inheritDoc} * <p> * Look at the classes java doc for detailed description of the applied strategies. * * @return the resolved dataprovider method or an empty {@link List} if dataprovider could not be found (never null) * @see DefaultDataProviderMethodResolver */ @Override public List<FrameworkMethod> resolve(FrameworkMethod testMethod, UseDataProvider useDataProvider) { checkNotNull(testMethod, "testMethod must not be null"); checkNotNull(useDataProvider, "useDataProvider must not be null"); List<TestClass> dataProviderLocations = findDataProviderLocations(testMethod, useDataProvider.location()); return findDataProviderMethods(dataProviderLocations, testMethod.getName(), useDataProvider.value()); }
result.add(null); } else { for (Class<? extends DataProviderMethodResolver> resolverClass : useDataProvider.resolver()) { DataProviderMethodResolver resolver = getResolverInstanceInt(resolverClass); if (ResolveStrategy.UNTIL_FIRST_MATCH.equals(useDataProvider.resolveStrategy()) && !dataProviderMethods.isEmpty()) { result.addAll(dataProviderMethods); break; } else if (ResolveStrategy.AGGREGATE_ALL_MATCHES.equals(useDataProvider.resolveStrategy())) { result.addAll(dataProviderMethods);
@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); }
@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(); }
/** * {@inheritDoc} * <p> * Look at the classes java doc for detailed description of the applied strategies. * * @return the resolved dataprovider method or an empty {@link List} if dataprovider could not be found (never null) * @see DefaultDataProviderMethodResolver */ @Override public List<FrameworkMethod> resolve(FrameworkMethod testMethod, UseDataProvider useDataProvider) { checkNotNull(testMethod, "testMethod must not be null"); checkNotNull(useDataProvider, "useDataProvider must not be null"); List<TestClass> dataProviderLocations = findDataProviderLocations(testMethod, useDataProvider.location()); return findDataProviderMethods(dataProviderLocations, testMethod.getName(), useDataProvider.value()); }
result.add(null); } else { for (Class<? extends DataProviderMethodResolver> resolverClass : useDataProvider.resolver()) { DataProviderMethodResolver resolver = getResolverInstanceInt(resolverClass); if (ResolveStrategy.UNTIL_FIRST_MATCH.equals(useDataProvider.resolveStrategy()) && !dataProviderMethods.isEmpty()) { result.addAll(dataProviderMethods); break; } else if (ResolveStrategy.AGGREGATE_ALL_MATCHES.equals(useDataProvider.resolveStrategy())) { result.addAll(dataProviderMethods);
@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); }
@Test @UseDataProvider("beforeAndAfterBlanks") public void nonNullValue(String blankBefore, String blankAfter) { Properties p = new Properties(); p.setProperty("foo", blankBefore + "bar" + blankAfter); Props props = new Props(p); assertThat(props.nonNullValue("foo")).isEqualTo("bar"); }
/** * {@inheritDoc} * <p> * Look at the classes java doc for detailed description of the applied strategies. * * @return the resolved dataprovider method or an empty {@link List} if dataprovider could not be found (never null) * @see DefaultDataProviderMethodResolver */ @Override public List<FrameworkMethod> resolve(FrameworkMethod testMethod, UseDataProvider useDataProvider) { checkNotNull(testMethod, "testMethod must not be null"); checkNotNull(useDataProvider, "useDataProvider must not be null"); List<TestClass> dataProviderLocations = findDataProviderLocations(testMethod, useDataProvider.location()); return findDataProviderMethods(dataProviderLocations, testMethod.getName(), useDataProvider.value()); }
result.add(null); } else { for (Class<? extends DataProviderMethodResolver> resolverClass : useDataProvider.resolver()) { DataProviderMethodResolver resolver = getResolverInstanceInt(resolverClass); if (ResolveStrategy.UNTIL_FIRST_MATCH.equals(useDataProvider.resolveStrategy()) && !dataProviderMethods.isEmpty()) { result.addAll(dataProviderMethods); break; } else if (ResolveStrategy.AGGREGATE_ALL_MATCHES.equals(useDataProvider.resolveStrategy())) { result.addAll(dataProviderMethods);
List<FrameworkMethod> dataProviderMethods = getDataProviderMethods(testMethod); if (dataProviderMethods.isEmpty()) { Class<? extends DataProviderMethodResolver>[] resolvers = testMethod.getAnnotation(UseDataProvider.class).resolver();
@Test public void testGetDataProviderMethodShouldReturnEmptyListForNotFoundDataProviderMethod() { // Given: doReturn(useDataProvider).when(testMethod).getAnnotation(UseDataProvider.class); doReturn("notAvailableDataProviderMethod").when(useDataProvider).value(); doReturn(asList(dataProviderMethod)).when(testClass).getAnnotatedMethods(DataProvider.class); doReturn("availableDataProviderMethod").when(dataProviderMethod).getName(); doReturn(dataProviderMethodResolver).when(underTest).getResolverInstanceInt(any(Class.class)); // When: List<FrameworkMethod> result = underTest.getDataProviderMethods(testMethod); // Then: assertThat(result).isEmpty(); assertThat(underTest.dataProviderMethods).containsEntry(testMethod, result); }
@Test @UseDataProvider("all_types_MeasureDtos") public void toMeasure_creates_no_MeasureVariation_if_dto_has_none_whichever_the_ValueType(MeasureDto measureDto, Metric metric) { assertThat(underTest.toMeasure(measureDto, metric).get().hasVariation()).isFalse(); }
@Test public void testResolveShouldReturnEmptyListForNotFoundDataProviderMethod() { // Given: final String testMethodName = "testMethodName"; final String dataProviderMethodName = "notAvailableDataProviderMethodName"; doReturn(testMethodName).when(testMethod).getName(); doReturn(dataProviderMethodName).when(useDataProvider).value(); doReturn(new Class<?>[0]).when(useDataProvider).location(); doReturn(asList(testClass)).when(underTest).findDataProviderLocations(testMethod, new Class<?>[0]); doReturn(emptyList()).when(underTest).findDataProviderMethods(asList(testClass), testMethodName, dataProviderMethodName); // When: List<FrameworkMethod> result = underTest.resolve(testMethod, useDataProvider); // Then: assertThat(result).isEmpty(); }
@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); }
List<FrameworkMethod> dataProviderMethods = getDataProviderMethods(testMethod); if (dataProviderMethods.isEmpty()) { Class<? extends DataProviderMethodResolver>[] resolvers = testMethod.getAnnotation(UseDataProvider.class).resolver();
@Test @UseDataProvider("stringsWithChar0") public void setStacktrace_filters_out_char_zero(String withChar0, String expected) { underTest.setErrorStacktrace(withChar0); assertThat(underTest.getErrorStacktrace()).isEqualTo(expected); }