Skip to content

Commit

Permalink
integration test for custom resolver finding multiple dataproviders (#70
Browse files Browse the repository at this point in the history
)
  • Loading branch information
aaschmid committed Oct 23, 2016
1 parent 794e7f5 commit da8f5a2
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.tngtech.test.java.junit.dataprovider.resolver;

import static org.assertj.core.api.Assertions.assertThat;

import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;

import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;

@RunWith(DataProviderRunner.class)
public class DataProviderResolverAcceptanceTest {

private static AtomicInteger counter;

@BeforeClass
public static void setupClass() {
counter = new AtomicInteger(0);
}

@AfterClass
public static void tearDownClass() {
assertThat(counter.get()).isEqualTo(6);
}

@DataProvider
public static Object[][] testNumberOne() {
// @formatter:off
return new Object[][] {
{ (byte) 1 },
};
// @formatter:on
}

@SuppressWarnings("unchecked")
@DataProvider
public static Iterable<Set<Integer>> testNumberTwo() {
// @formatter:off
return Arrays.asList(
Collections.singleton(2),
Collections.singleton(Integer.valueOf(3))
);
// @formatter:on
}

@DataProvider
public static Set<Number> testNumberThree() {
Set<Number> result = new LinkedHashSet<Number>();
result.add(4);
result.add(5L);
result.add(6.0);
return result;
}

@Test
@UseDataProvider(resolver = DataProviderStartWithTestMethodNameResolver.class)
public void testNumber(Number number) {
// When:
int count = counter.incrementAndGet();

// Then:
assertThat(count).isEqualTo(number.intValue());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.tngtech.test.java.junit.dataprovider.resolver;

import java.util.ArrayList;
import java.util.List;

import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.TestClass;

import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderMethodResolver;
import com.tngtech.java.junit.dataprovider.internal.DefaultDataProviderMethodResolver;

/**
* {@link DataProviderMethodResolver} which returns all dataproviders which start with the name of the {@code testMethod}.
*/
public class DataProviderStartWithTestMethodNameResolver extends DefaultDataProviderMethodResolver {

// TODO think again about API?
// * put dataProviderMethods into findDataProviderMethod
// * make findDataProviderMethod private?
// * make findMethod protected?

@Override
protected List<FrameworkMethod> findDataProviderMethods(List<TestClass> locations, String testMethodName, String useDataProviderValue) {
List<FrameworkMethod> result = new ArrayList<FrameworkMethod>();

for (TestClass location : locations) {
List<FrameworkMethod> dataProviderMethods = location.getAnnotatedMethods(DataProvider.class);
for (FrameworkMethod dataProviderMethod : dataProviderMethods) {
if (dataProviderMethod.getName().startsWith(testMethodName)) {
result.add(dataProviderMethod);
}
}
}
return result;
}
}

0 comments on commit da8f5a2

Please sign in to comment.