private List<FrameworkMethod> explodeTestMethod(FrameworkMethod testMethod, Object data, DataProvider dataProvider) { Method method = testMethod.getMethod(); List<Object[]> converted = dataConverter.convert(data, method.isVarArgs(), method.getParameterTypes(), dataProvider); if (converted.isEmpty()) { throw new IllegalArgumentException( "Could not create test methods using probably 'null' or 'empty' dataprovider"); } int idx = 0; List<FrameworkMethod> result = new ArrayList<FrameworkMethod>(); for (Object[] parameters : converted) { result.add(new DataProviderFrameworkMethod(method, idx++, parameters, dataProvider.format())); } return result; } }
private List<FrameworkMethod> explodeTestMethod(FrameworkMethod testMethod, Object data, DataProvider dataProvider) { Method method = testMethod.getMethod(); List<Object[]> converted = dataConverter.convert(data, method.isVarArgs(), method.getParameterTypes(), dataProvider); if (converted.isEmpty()) { throw new IllegalArgumentException("Could not create test methods using probably 'null' or 'empty' dataprovider"); } int idx = 0; List<FrameworkMethod> result = new ArrayList<FrameworkMethod>(); for (Object[] parameters : converted) { result.add(new DataProviderFrameworkMethod(method, idx++, parameters, dataProvider.format(), dataProvider.formatter())); } return result; } }
private List<FrameworkMethod> explodeTestMethod(FrameworkMethod testMethod, Object data, DataProvider dataProvider) { Method method = testMethod.getMethod(); List<Object[]> converted = dataConverter.convert(data, method.isVarArgs(), method.getParameterTypes(), dataProvider); if (converted.isEmpty()) { throw new IllegalArgumentException("Could not create test methods using probably 'null' or 'empty' dataprovider"); } int idx = 0; List<FrameworkMethod> result = new ArrayList<FrameworkMethod>(); for (Object[] parameters : converted) { result.add(new DataProviderFrameworkMethod(method, idx++, parameters, dataProvider.format())); } return result; } }
private List<FrameworkMethod> explodeTestMethod(FrameworkMethod testMethod, Object data, DataProvider dataProvider) { Method method = testMethod.getMethod(); List<Object[]> converted = dataConverter.convert(data, method.isVarArgs(), method.getParameterTypes(), dataProvider); if (converted.isEmpty()) { throw new IllegalArgumentException("Could not create test methods using probably 'null' or 'empty' dataprovider"); } int idx = 0; List<FrameworkMethod> result = new ArrayList<FrameworkMethod>(); for (Object[] parameters : converted) { result.add(new DataProviderFrameworkMethod(method, idx++, parameters, dataProvider.format(), dataProvider.formatter())); } return result; } }
@Test public void testExplodeTestMethodsDataProviderShouldReturnOneDataProviderFrameworkMethodIfDataConverterReturnsOneRow() { // Given: List<Object[]> dataConverterResult = listOfArrays(new Object[] { 1, "test1" }); doReturn(dataConverterResult).when(dataConverter).convert(any(), any(Boolean.class), any(Class[].class), any(DataProvider.class)); doReturn("%i").when(dataProvider).format(); // When: List<FrameworkMethod> result = underTest.explodeTestMethod(testMethod, dataProvider); // Then: assertDataProviderFrameworkMethods(result, dataConverterResult, "%i"); }
@Test public void testExplodeTestMethodsDataProviderShouldReturnMultipleDataProviderFrameworkMethodIfDataProviderValueArrayReturnsMultipleRows() { // Given: List<Object[]> dataConverterResult = listOfArrays(new Object[] { "2a", "foo" }, new Object[] { "3b", "bar" }, new Object[] { "4c", "baz" }); doReturn(dataConverterResult).when(dataConverter).convert(any(), any(Boolean.class), any(Class[].class), any(DataProvider.class)); doReturn("%p[0]").when(dataProvider).format(); // When: List<FrameworkMethod> result = underTest.explodeTestMethod(testMethod, dataProvider); // Then: assertDataProviderFrameworkMethods(result, dataConverterResult, "%p[0]"); }
@Test public void testExplodeTestMethodsUseDataProviderShouldUseCachedDataProviderResultIfAvailable() { // Given: Object data = new Object[][] { { 1 } }; TestGenerator.dataProviderDataCache.put(dataProviderMethod, data); doReturn(listOfArrays(new Object[] { 1 })).when(dataConverter).convert(any(), any(Boolean.class), any(Class[].class), any(DataProvider.class)); doReturn(dataProvider).when(dataProviderMethod).getAnnotation(DataProvider.class); doReturn("%m").when(dataProvider).format(); // When: underTest.explodeTestMethod(testMethod, dataProviderMethod); // Then: verify(dataProviderMethod).getAnnotation(DataProvider.class); verify(dataConverter).convert(eq(data), eq(false), any(Class[].class), eq(dataProvider)); verifyNoMoreInteractions(dataProviderMethod, dataConverter); }
@Test public void testExplodeTestMethodsUseDataProviderShouldReturnOneDataProviderFrameworkMethodIfDataConverterReturnsOneRow() throws Throwable { // Given: List<Object[]> dataConverterResult = listOfArrays(new Object[] { 1, 2, 3 }); doReturn(dataConverterResult).when(dataConverter).convert(any(), any(Boolean.class), any(Class[].class), any(DataProvider.class)); doReturn(dataProvider).when(dataProviderMethod).getAnnotation(DataProvider.class); doReturn("%m").when(dataProvider).format(); // When: List<FrameworkMethod> result = underTest.explodeTestMethod(testMethod, dataProviderMethod); // Then: assertDataProviderFrameworkMethods(result, dataConverterResult, "%m"); verify(dataProviderMethod).invokeExplosively(null); }
@Test public void testExplodeTestMethodsUseDataProviderShouldReturnMultipleDataProviderFrameworkMethodIfDataConverterReturnsMultipleRows() throws Throwable { // Given: List<Object[]> dataConverterResult = listOfArrays(new Object[] { 11, "22", 33L }, new Object[] { 44, "55", 66L }, new Object[] { 77, "88", 99L }); doReturn(dataConverterResult).when(dataConverter).convert(any(), any(Boolean.class), any(Class[].class), any(DataProvider.class)); doReturn(dataProvider).when(dataProviderMethod).getAnnotation(DataProvider.class); doReturn("%c").when(dataProvider).format(); doReturn(false).when(dataProvider).cache(); // When: List<FrameworkMethod> result = underTest.explodeTestMethod(testMethod, dataProviderMethod); // Then: assertThat(TestGenerator.dataProviderDataCache).isEmpty(); assertDataProviderFrameworkMethods(result, dataConverterResult, "%c"); verify(dataProviderMethod).invokeExplosively(null); }
@Test public void testExplodeTestMethodsUseDataProviderShouldReturnFrameworkMethodInjectedToUseDataProviderMethodIfExists() throws Throwable { // Given: final Method method = getMethod("dataProviderMethod"); doReturn(method).when(dataProviderMethod).getMethod(); List<Object[]> dataConverterResult = listOfArrays(new Object[] { null }); doReturn(dataConverterResult).when(dataConverter).convert(any(), anyBoolean(), any(Class[].class), any(DataProvider.class)); doReturn(dataProvider).when(dataProviderMethod).getAnnotation(DataProvider.class); doReturn(DataProvider.DEFAULT_FORMAT).when(dataProvider).format(); doReturn(true).when(dataProvider).cache(); // When: List<FrameworkMethod> result = underTest.explodeTestMethod(testMethod, dataProviderMethod); // Then: assertThat(TestGenerator.dataProviderDataCache).hasSize(1).containsKey(dataProviderMethod); assertThat(result).hasSize(1); verify(dataProviderMethod).invokeExplosively(null, testMethod); }