package ru.yandex.qatools.allure.data.utils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import ru.yandex.qatools.allure.data.testdata.SomeService; import java.net.URL; import java.net.URLClassLoader; import java.util.Arrays; import java.util.Collection; import java.util.List; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; /** * @author Dmitry Baev charlie@yandex-team.ru * Date: 18.02.15 */ @RunWith(Parameterized.class) public class ServiceLoaderUtilsTest { private String resourceDirectory; private int countOfServicesShouldBeLoaded; private ClassLoader classLoader; public ServiceLoaderUtilsTest(String resourceDirectory, int countOfServicesShouldBeLoaded) { this.resourceDirectory = resourceDirectory; this.countOfServicesShouldBeLoaded = countOfServicesShouldBeLoaded; } @Parameterized.Parameters public static Collection<Object[]> data() { return Arrays.asList( new Object[]{"testdata1/", 0}, new Object[]{"testdata2/", 0}, new Object[]{"testdata3/", 1} ); } @Before public void setUp() { URL url = getClass().getClassLoader().getResource(resourceDirectory); classLoader = new URLClassLoader( new URL[]{url}, Thread.currentThread().getContextClassLoader() ); } @Test public void shouldNotFail() throws Exception { List<SomeService> loaded = ServiceLoaderUtils.load(classLoader, SomeService.class); assertNotNull(loaded); assertThat(loaded, hasSize(countOfServicesShouldBeLoaded)); } }