This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 1f9a74c94e77f412caaee201bc98e9eeab95e5c9 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Wed Jul 22 23:04:37 2020 +0200 [CAMEL-11807] Upgrade camel-solr to junit5 --- components/camel-solr/pom.xml | 2 +- .../camel/component/solr/InitSolrEndpointTest.java | 19 +++++--- .../camel/component/solr/SolrAddBeanTest.java | 10 ++-- .../camel/component/solr/SolrAddBeansTest.java | 14 +++--- .../component/solr/SolrComponentTestSupport.java | 40 +++++++++------- .../camel/component/solr/SolrDeleteTest.java | 20 ++++---- .../component/solr/SolrServerMissingTest.java | 4 +- .../camel/component/solr/SolrTestSupport.java | 6 +-- .../camel/component/solr/SolrTransactionsTest.java | 54 ++++++++++------------ .../camel/component/solr/SolrUpdateTest.java | 18 ++++---- .../test/junit5/params/ParameterizedExtension.java | 30 +++++++++--- 11 files changed, 118 insertions(+), 99 deletions(-) diff --git a/components/camel-solr/pom.xml b/components/camel-solr/pom.xml index 98cf612..44bf914 100644 --- a/components/camel-solr/pom.xml +++ b/components/camel-solr/pom.xml @@ -71,7 +71,7 @@ <!-- test dependencies --> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-test</artifactId> + <artifactId>camel-test-junit5</artifactId> <scope>test</scope> </dependency> <dependency> diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/InitSolrEndpointTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/InitSolrEndpointTest.java index d7d01dc..d282592 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/InitSolrEndpointTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/InitSolrEndpointTest.java @@ -17,7 +17,11 @@ package org.apache.camel.component.solr; import org.apache.camel.ResolveEndpointFailedException; -import org.junit.Test; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; public class InitSolrEndpointTest extends SolrTestSupport { @@ -26,8 +30,8 @@ public class InitSolrEndpointTest extends SolrTestSupport { @Test public void endpointCreatedCorrectlyWithAllOptions() throws Exception { SolrEndpoint solrEndpoint = context.getEndpoint(solrUrl + getFullOptions(), SolrEndpoint.class); - assertEquals("queue size incorrect", 5, solrEndpoint.getStreamingQueueSize()); - assertEquals("thread count incorrect", 1, solrEndpoint.getStreamingThreadCount()); + assertEquals(5, solrEndpoint.getStreamingQueueSize(), "queue size incorrect"); + assertEquals(1, solrEndpoint.getStreamingThreadCount(), "thread count incorrect"); assertNotNull(solrEndpoint); } @@ -35,13 +39,14 @@ public class InitSolrEndpointTest extends SolrTestSupport { public void streamingEndpointCreatedCorrectly() throws Exception { SolrEndpoint solrEndpoint = context.getEndpoint(solrUrl, SolrEndpoint.class); assertNotNull(solrEndpoint); - assertEquals("queue size incorrect", SolrConstants.DEFUALT_STREAMING_QUEUE_SIZE, solrEndpoint.getStreamingQueueSize()); - assertEquals("thread count incorrect", SolrConstants.DEFAULT_STREAMING_THREAD_COUNT, solrEndpoint.getStreamingThreadCount()); + assertEquals(SolrConstants.DEFUALT_STREAMING_QUEUE_SIZE, solrEndpoint.getStreamingQueueSize(), "queue size incorrect"); + assertEquals(SolrConstants.DEFAULT_STREAMING_THREAD_COUNT, solrEndpoint.getStreamingThreadCount(), "thread count incorrect"); } - @Test(expected = ResolveEndpointFailedException.class) + @Test public void wrongURLFormatFailsEndpointCreation() throws Exception { - context.getEndpoint("solr://localhost:x99/solr"); + assertThrows(ResolveEndpointFailedException.class, + () -> context.getEndpoint("solr://localhost:x99/solr")); } private String getFullOptions() { diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeanTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeanTest.java index bd4a493..1db45f0 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeanTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeanTest.java @@ -16,14 +16,12 @@ */ package org.apache.camel.component.solr; +import org.apache.camel.test.junit5.params.Test; import org.apache.solr.client.solrj.beans.Field; -import org.junit.Test; -public class SolrAddBeanTest extends SolrComponentTestSupport { +import static org.junit.jupiter.api.Assertions.assertEquals; - public SolrAddBeanTest(SolrFixtures.TestServerType serverToTest) { - super(serverToTest); - } +public class SolrAddBeanTest extends SolrComponentTestSupport { @Test public void testAddBean() throws Exception { @@ -37,7 +35,7 @@ public class SolrAddBeanTest extends SolrComponentTestSupport { template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_COMMIT); //verify - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); } public class Item { diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeansTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeansTest.java index 4a6cd1f..8b532da 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeansTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrAddBeansTest.java @@ -19,14 +19,12 @@ package org.apache.camel.component.solr; import java.util.ArrayList; import java.util.List; +import org.apache.camel.test.junit5.params.Test; import org.apache.solr.client.solrj.beans.Field; -import org.junit.Test; -public class SolrAddBeansTest extends SolrComponentTestSupport { +import static org.junit.jupiter.api.Assertions.assertEquals; - public SolrAddBeansTest(SolrFixtures.TestServerType serverToTest) { - super(serverToTest); - } +public class SolrAddBeansTest extends SolrComponentTestSupport { @Test public void testAddBeans() throws Exception { @@ -49,9 +47,9 @@ public class SolrAddBeansTest extends SolrComponentTestSupport { template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_COMMIT); //verify - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID2).getResults().getNumFound()); - assertEquals("wrong number of entries found", 2, executeSolrQuery("*:*").getResults().getNumFound()); + assertEquals(1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); + assertEquals(1, executeSolrQuery("id:" + TEST_ID2).getResults().getNumFound(), "wrong number of entries found"); + assertEquals(2, executeSolrQuery("*:*").getResults().getNumFound(), "wrong number of entries found"); } public class Item { diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java index 7bde762..cd0bab3 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java @@ -23,28 +23,27 @@ import java.util.HashMap; import java.util.Map; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.junit5.params.Parameter; +import org.apache.camel.test.junit5.params.Parameterized; +import org.apache.camel.test.junit5.params.Parameters; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -@RunWith(Parameterized.class) +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; + +@Parameterized public abstract class SolrComponentTestSupport extends SolrTestSupport { protected static final String TEST_ID = "test1"; protected static final String TEST_ID2 = "test2"; - private SolrFixtures solrFixtures; + @Parameter + SolrFixtures.TestServerType serverToTest; - public SolrComponentTestSupport(SolrFixtures.TestServerType serverToTest) { - this.solrFixtures = new SolrFixtures(serverToTest); - } + SolrFixtures solrFixtures; protected void solrInsertTestEntry() { solrInsertTestEntry(TEST_ID); @@ -54,8 +53,15 @@ public abstract class SolrComponentTestSupport extends SolrTestSupport { return Arrays.asList(new Object[][] {{true}, {false}}); } + SolrFixtures getSolrFixtures() { + if (solrFixtures == null) { + solrFixtures = new SolrFixtures(serverToTest); + } + return solrFixtures; + } + String solrRouteUri() { - return solrFixtures.solrRouteUri(); + return getSolrFixtures().solrRouteUri(); } protected void solrInsertTestEntry(String id) { @@ -74,16 +80,16 @@ public abstract class SolrComponentTestSupport extends SolrTestSupport { solrQuery.setQuery(query); QueryRequest queryRequest = new QueryRequest(solrQuery); queryRequest.setBasicAuthCredentials("solr", "SolrRocks"); - SolrClient solrServer = solrFixtures.getServer(); + SolrClient solrServer = getSolrFixtures().getServer(); return queryRequest.process(solrServer, "collection1"); } - @BeforeClass + @BeforeAll public static void beforeClass() throws Exception { SolrFixtures.createSolrFixtures(); } - @AfterClass + @AfterAll public static void afterClass() throws Exception { SolrFixtures.teardownSolrFixtures(); } @@ -112,7 +118,7 @@ public abstract class SolrComponentTestSupport extends SolrTestSupport { return Arrays.asList(serverTypes); } - @Before + @BeforeEach public void clearIndex() throws Exception { SolrFixtures.clearIndex(); } diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrDeleteTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrDeleteTest.java index 74afa11..22d1f3a 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrDeleteTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrDeleteTest.java @@ -18,13 +18,11 @@ package org.apache.camel.component.solr; import java.util.Arrays; -import org.junit.Test; +import org.apache.camel.test.junit5.params.Test; -public class SolrDeleteTest extends SolrComponentTestSupport { +import static org.junit.jupiter.api.Assertions.assertEquals; - public SolrDeleteTest(SolrFixtures.TestServerType serverToTest) { - super(serverToTest); - } +public class SolrDeleteTest extends SolrComponentTestSupport { @Test public void testDeleteById() throws Exception { @@ -32,14 +30,14 @@ public class SolrDeleteTest extends SolrComponentTestSupport { //insert, commit and verify solrInsertTestEntry(); solrCommit(); - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); //delete template.sendBodyAndHeader("direct:start", TEST_ID, SolrConstants.OPERATION, SolrConstants.OPERATION_DELETE_BY_ID); solrCommit(); //verify - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); } @Test @@ -49,13 +47,13 @@ public class SolrDeleteTest extends SolrComponentTestSupport { solrInsertTestEntry(TEST_ID); solrInsertTestEntry(TEST_ID2); solrCommit(); - assertEquals("wrong number of entries found", 2, executeSolrQuery("id:test*").getResults().getNumFound()); + assertEquals(2, executeSolrQuery("id:test*").getResults().getNumFound(), "wrong number of entries found"); //delete template.sendBodyAndHeader("direct:splitThenCommit", Arrays.asList(TEST_ID, TEST_ID2), SolrConstants.OPERATION, SolrConstants.OPERATION_DELETE_BY_ID); //verify - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:test*").getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:test*").getResults().getNumFound(), "wrong number of entries found"); } @Test @@ -65,13 +63,13 @@ public class SolrDeleteTest extends SolrComponentTestSupport { solrInsertTestEntry(TEST_ID); solrInsertTestEntry(TEST_ID2); solrCommit(); - assertEquals("wrong number of entries found", 2, executeSolrQuery("id:test*").getResults().getNumFound()); + assertEquals(2, executeSolrQuery("id:test*").getResults().getNumFound(), "wrong number of entries found"); //delete template.sendBodyAndHeader("direct:start", "id:test*", SolrConstants.OPERATION, SolrConstants.OPERATION_DELETE_BY_QUERY); solrCommit(); //verify - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:test*").getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:test*").getResults().getNumFound(), "wrong number of entries found"); } } diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrServerMissingTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrServerMissingTest.java index 84514f0..95c593d 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrServerMissingTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrServerMissingTest.java @@ -18,7 +18,9 @@ package org.apache.camel.component.solr; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.junit.Test; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; public class SolrServerMissingTest extends SolrTestSupport { diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTestSupport.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTestSupport.java index a11e271..60f310b 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTestSupport.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTestSupport.java @@ -17,15 +17,15 @@ package org.apache.camel.component.solr; import org.apache.camel.test.AvailablePortFinder; -import org.apache.camel.test.junit4.CamelTestSupport; -import org.junit.BeforeClass; +import org.apache.camel.test.junit5.CamelTestSupport; +import org.junit.jupiter.api.BeforeAll; public abstract class SolrTestSupport extends CamelTestSupport { private static int port; private static int httpsPort; - @BeforeClass + @BeforeAll public static void initPort() throws Exception { port = AvailablePortFinder.getNextAvailable(); httpsPort = AvailablePortFinder.getNextAvailable(); diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTransactionsTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTransactionsTest.java index de3e5b4..4a0997f 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTransactionsTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrTransactionsTest.java @@ -17,40 +17,28 @@ package org.apache.camel.component.solr; import org.apache.camel.CamelExecutionException; +import org.apache.camel.test.junit5.params.Test; import org.apache.solr.client.solrj.impl.HttpSolrClient; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import static org.hamcrest.CoreMatchers.allOf; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.isA; -import static org.junit.internal.matchers.ThrowableMessageMatcher.hasMessage; +import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class SolrTransactionsTest extends SolrComponentTestSupport { - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private SolrFixtures.TestServerType solrServerType; - - public SolrTransactionsTest(SolrFixtures.TestServerType solrServerType) { - super(solrServerType); - this.solrServerType = solrServerType; - } - @Test public void testCommit() throws Exception { //insert and verify solrInsertTestEntry(); - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); //commit template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_COMMIT); //verify exists after commit - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); } @Test @@ -58,41 +46,47 @@ public class SolrTransactionsTest extends SolrComponentTestSupport { //insert and verify solrInsertTestEntry(); - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); //commit template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_SOFT_COMMIT); //verify exists after commit - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); } @Test public void testRollback() throws Exception { - if (SolrFixtures.TestServerType.USE_CLOUD == this.solrServerType) { + if (SolrFixtures.TestServerType.USE_CLOUD == getSolrFixtures().serverType) { // Twisting expectations in this case as rollback is currently no // more supported in SolrCloud mode. See SOLR-4895 - thrown.expect(CamelExecutionException.class); - final String expectedMessagePart = "Rollback is currently not supported in SolrCloud mode. (SOLR-4895)"; - thrown.expectCause(allOf(isA(HttpSolrClient.RemoteSolrException.class), hasMessage(containsString(expectedMessagePart)))); + Exception e = assertThrows(CamelExecutionException.class, + () -> doRollback()); + assertIsInstanceOf(HttpSolrClient.RemoteSolrException.class, e.getCause()); + assertTrue(e.getCause().getMessage().contains("Rollback is currently not supported in SolrCloud mode. (SOLR-4895)")); + } else { + doRollback(); } + } + + protected void doRollback() throws Exception { //insert and verify solrInsertTestEntry(); - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); //rollback template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_ROLLBACK); //verify after rollback - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); //commit template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_COMMIT); //verify after commit (again) - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); } @Test @@ -100,13 +94,13 @@ public class SolrTransactionsTest extends SolrComponentTestSupport { //insert and verify solrInsertTestEntry(); - assertEquals("wrong number of entries found", 0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(0, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); //optimize template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_OPTIMIZE); //verify exists after optimize - assertEquals("wrong number of entries found", 1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound()); + assertEquals(1, executeSolrQuery("id:" + TEST_ID).getResults().getNumFound(), "wrong number of entries found"); } } diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java index a5185e9..954d50d 100644 --- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java +++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrUpdateTest.java @@ -22,25 +22,25 @@ import java.util.Arrays; import java.util.List; import org.apache.camel.Exchange; +import org.apache.camel.test.junit5.params.Test; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.util.ClientUtils; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.UpdateParams; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; public class SolrUpdateTest extends SolrComponentTestSupport { private SolrEndpoint solrEndpoint; - public SolrUpdateTest(SolrFixtures.TestServerType serverToTest) { - super(serverToTest); - } - @Override - @Before + @BeforeEach public void setUp() throws Exception { super.setUp(); solrEndpoint = getMandatoryEndpoint(solrRouteUri(), SolrEndpoint.class); @@ -304,7 +304,7 @@ public class SolrUpdateTest extends SolrComponentTestSupport { } @Test - @Ignore("No real advantage has yet been discovered to specifying the file in a header.") + @Disabled("No real advantage has yet been discovered to specifying the file in a header.") public void indexPDFDocumentSpecifyingFileInParameters() throws Exception { solrEndpoint.setRequestHandler("/update/extract"); diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java index 62246be..e73cf82 100644 --- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java +++ b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java @@ -21,7 +21,9 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Comparator; +import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.junit.jupiter.api.extension.Extension; import org.junit.jupiter.api.extension.ExtensionContext; @@ -50,10 +52,7 @@ public class ParameterizedExtension implements TestTemplateInvocationContextProv public java.util.stream.Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext extensionContext) { Class<?> testClass = extensionContext.getRequiredTestClass(); try { - java.util.List<Method> parameters = java.util.stream.Stream.of(testClass.getDeclaredMethods()) - .filter(m -> Modifier.isStatic(m.getModifiers())) - .filter(m -> m.getAnnotation(Parameters.class) != null) - .collect(Collectors.toList()); + List<Method> parameters = getParametersMethods(testClass); if (parameters.size() != 1) { throw new IllegalStateException("Class " + testClass.getName() + " should provide a single method annotated with @" + Parameters.class.getSimpleName()); } @@ -63,7 +62,19 @@ public class ParameterizedExtension implements TestTemplateInvocationContextProv .map(Arguments::get) .map(ParameterizedTemplate::new); } catch (Exception e) { - throw new IllegalStateException("Unable to generate test templates for class " + testClass.getName()); + throw new IllegalStateException("Unable to generate test templates for class " + testClass.getName(), e); + } + } + + private List<Method> getParametersMethods(Class<?> testClass) { + List<Method> parameters = java.util.stream.Stream.of(testClass.getDeclaredMethods()) + .filter(m -> Modifier.isStatic(m.getModifiers())) + .filter(m -> m.getAnnotation(Parameters.class) != null) + .collect(Collectors.toList()); + if (parameters.isEmpty() && testClass != null) { + return getParametersMethods(testClass.getSuperclass()); + } else { + return parameters; } } @@ -108,7 +119,9 @@ public class ParameterizedExtension implements TestTemplateInvocationContextProv protected void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception { Class<?> clazz = testInstance.getClass(); - java.util.List<Field> fields = java.util.stream.Stream.of(clazz.getDeclaredFields()) + java.util.List<Field> fields = hierarchy(clazz) + .map(Class::getDeclaredFields) + .flatMap(Stream::of) .filter(f -> isAnnotated(f, Parameter.class)) .sorted(Comparator.comparing(f -> (Integer) f.getAnnotation(Parameter.class).value())) .collect(Collectors.toList()); @@ -122,6 +135,11 @@ public class ParameterizedExtension implements TestTemplateInvocationContextProv } } + protected Stream<Class<?>> hierarchy(Class<?> clazz) { + Class<?> superclass = clazz.getSuperclass(); + return Stream.concat(Stream.of(clazz), superclass != null ? hierarchy(superclass) : Stream.empty()); + } + } }