You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by fm...@apache.org on 2026/02/25 16:47:33 UTC

(camel-spring-boot) branch main updated: CAMEL-22891: refactoring IT using JUnit

This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git


The following commit(s) were added to refs/heads/main by this push:
     new f32e3a254e9 CAMEL-22891: refactoring IT using JUnit
f32e3a254e9 is described below

commit f32e3a254e9e49d43047171be488e8a524d31f4d
Author: Marco Carletti <mc...@ibm.com>
AuthorDate: Wed Feb 25 14:28:09 2026 +0100

    CAMEL-22891: refactoring IT using JUnit
---
 tests/camel-itest-spring-boot/README.adoc          | 241 ++++++-
 tests/camel-itest-spring-boot/pom.xml              | 257 +++-----
 .../itest/springboot/ApplicationContextHolder.java |  62 --
 .../camel/itest/springboot/CommandRouter.java      |  56 --
 .../camel/itest/springboot/ITestApplication.java   |  58 --
 .../apache/camel/itest/springboot/ITestConfig.java | 316 ---------
 .../camel/itest/springboot/ITestConfigBuilder.java | 315 ---------
 .../springboot/command/AbstractTestCommand.java    |  57 --
 .../springboot/command/ComponentTestCommand.java   |  53 --
 .../springboot/command/DataFormatTestCommand.java  |  53 --
 .../springboot/command/LanguageTestCommand.java    |  53 --
 .../itest/springboot/command/UnitTestCommand.java  | 246 -------
 .../itest/springboot/command/UnitTestResult.java   |  91 ---
 .../common/AbstractSpringBootBaseTestSupport.java  | 370 +++++++++++
 .../itest/springboot/common/ArchetypeConfig.java   | 177 +++++
 .../common/ArchetypeGenerationExtension.java       | 279 ++++++++
 .../itest/springboot/util/CreateTestClass.java     | 146 +++++
 .../itest/springboot/util/SerializationUtils.java  |  72 --
 .../src/main/resources/logback.xml                 |  12 +
 .../myconverter/StaticDummyFallbackConverter.java  |  43 --
 .../springboot/AbstractSpringBootTestSupport.java  | 107 ---
 .../camel/itest/springboot/CamelActivemq6IT.java}  |  18 +-
 .../camel/itest/springboot/CamelActivemq6Test.java |  44 --
 .../camel/itest/springboot/CamelActivemqIT.java}   |  14 +-
 .../camel/itest/springboot/CamelActivemqTest.java  |  44 --
 .../camel/itest/springboot/CamelAmqpIT.java}       |  14 +-
 .../camel/itest/springboot/CamelAmqpTest.java      |  44 --
 .../camel/itest/springboot/CamelArangodbIT.java}   |  14 +-
 .../camel/itest/springboot/CamelArangodbTest.java  |  45 --
 .../apache/camel/itest/springboot/CamelAs2IT.java} |  14 +-
 .../camel/itest/springboot/CamelAs2Test.java       |  44 --
 .../camel/itest/springboot/CamelAsn1IT.java}       |  14 +-
 .../camel/itest/springboot/CamelAsn1Test.java      |  44 --
 .../camel/itest/springboot/CamelAsteriskIT.java}   |  14 +-
 .../camel/itest/springboot/CamelAsteriskTest.java  |  44 --
 .../springboot/CamelAtmosphereWebsocketIT.java}    |  14 +-
 .../springboot/CamelAtmosphereWebsocketTest.java   |  44 --
 .../camel/itest/springboot/CamelAtomIT.java}       |  14 +-
 .../camel/itest/springboot/CamelAtomTest.java      |  44 --
 .../camel/itest/springboot/CamelAvroIT.java}       |  14 +-
 .../camel/itest/springboot/CamelAvroRpcIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAvroRpcTest.java   |  46 --
 .../camel/itest/springboot/CamelAvroTest.java      |  47 --
 .../camel/itest/springboot/CamelAws2AthenaIT.java} |  14 +-
 .../itest/springboot/CamelAws2AthenaTest.java      |  44 --
 .../itest/springboot/CamelAws2ComprehendIT.java}   |  14 +-
 .../itest/springboot/CamelAws2ComprehendTest.java  |  44 --
 .../camel/itest/springboot/CamelAws2CwIT.java}     |  14 +-
 .../camel/itest/springboot/CamelAws2CwTest.java    |  44 --
 .../camel/itest/springboot/CamelAws2DdbIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2DdbTest.java   |  46 --
 .../camel/itest/springboot/CamelAws2Ec2IT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2Ec2Test.java   |  44 --
 .../camel/itest/springboot/CamelAws2EcsIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2EcsTest.java   |  44 --
 .../camel/itest/springboot/CamelAws2EksIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2EksTest.java   |  44 --
 .../itest/springboot/CamelAws2EventbridgeIT.java}  |  14 +-
 .../itest/springboot/CamelAws2EventbridgeTest.java |  44 --
 .../camel/itest/springboot/CamelAws2IamIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2IamTest.java   |  44 --
 .../itest/springboot/CamelAws2KinesisIT.java}      |  14 +-
 .../itest/springboot/CamelAws2KinesisTest.java     |  46 --
 .../camel/itest/springboot/CamelAws2KmsIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2KmsTest.java   |  44 --
 .../camel/itest/springboot/CamelAws2LambdaIT.java} |  14 +-
 .../itest/springboot/CamelAws2LambdaTest.java      |  44 --
 .../camel/itest/springboot/CamelAws2MqIT.java}     |  14 +-
 .../camel/itest/springboot/CamelAws2MqTest.java    |  44 --
 .../camel/itest/springboot/CamelAws2MskIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2MskTest.java   |  44 --
 .../camel/itest/springboot/CamelAws2PollyIT.java}  |  14 +-
 .../camel/itest/springboot/CamelAws2PollyTest.java |  44 --
 .../itest/springboot/CamelAws2RedshiftIT.java}     |  14 +-
 .../itest/springboot/CamelAws2RedshiftTest.java    |  44 --
 .../itest/springboot/CamelAws2RekognitionIT.java}  |  14 +-
 .../itest/springboot/CamelAws2RekognitionTest.java |  44 --
 .../camel/itest/springboot/CamelAws2S3IT.java}     |  14 +-
 .../camel/itest/springboot/CamelAws2S3Test.java    |  44 --
 .../itest/springboot/CamelAws2S3VectorsIT.java}    |  14 +-
 .../itest/springboot/CamelAws2S3VectorsTest.java   |  44 --
 .../camel/itest/springboot/CamelAws2SesIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2SesTest.java   |  44 --
 .../camel/itest/springboot/CamelAws2SnsIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2SnsTest.java   |  44 --
 .../camel/itest/springboot/CamelAws2SqsIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2SqsTest.java   |  44 --
 .../springboot/CamelAws2StepFunctionsIT.java}      |  14 +-
 .../springboot/CamelAws2StepFunctionsTest.java     |  44 --
 .../camel/itest/springboot/CamelAws2StsIT.java}    |  14 +-
 .../camel/itest/springboot/CamelAws2StsTest.java   |  44 --
 .../itest/springboot/CamelAws2TextractIT.java}     |  14 +-
 .../itest/springboot/CamelAws2TextractTest.java    |  44 --
 .../itest/springboot/CamelAws2TimestreamIT.java}   |  14 +-
 .../itest/springboot/CamelAws2TimestreamTest.java  |  44 --
 .../itest/springboot/CamelAws2TranscribeIT.java}   |  14 +-
 .../itest/springboot/CamelAws2TranscribeTest.java  |  44 --
 .../itest/springboot/CamelAws2TranslateIT.java}    |  14 +-
 .../itest/springboot/CamelAws2TranslateTest.java   |  44 --
 .../camel/itest/springboot/CamelAwsBedrockIT.java} |  14 +-
 .../itest/springboot/CamelAwsBedrockTest.java      |  47 --
 .../itest/springboot/CamelAwsCloudtrailIT.java}    |  14 +-
 .../itest/springboot/CamelAwsCloudtrailTest.java   |  44 --
 .../camel/itest/springboot/CamelAwsConfigIT.java}  |  14 +-
 .../camel/itest/springboot/CamelAwsConfigTest.java |  44 --
 .../springboot/CamelAwsParameterStoreIT.java}      |  14 +-
 .../springboot/CamelAwsParameterStoreTest.java     |  44 --
 .../springboot/CamelAwsSecretsManagerIT.java}      |  14 +-
 .../springboot/CamelAwsSecretsManagerTest.java     |  44 --
 .../itest/springboot/CamelAwsSecurityHubIT.java}   |  14 +-
 .../itest/springboot/CamelAwsSecurityHubTest.java  |  44 --
 .../camel/itest/springboot/CamelAwsXrayTest.java   |  44 --
 .../itest/springboot/CamelAzureCosmosdbIT.java}    |  14 +-
 .../itest/springboot/CamelAzureCosmosdbTest.java   |  44 --
 .../itest/springboot/CamelAzureEventgridIT.java}   |  14 +-
 .../itest/springboot/CamelAzureEventgridTest.java  |  44 --
 .../itest/springboot/CamelAzureEventhubsIT.java}   |  14 +-
 .../itest/springboot/CamelAzureEventhubsTest.java  |  44 --
 .../camel/itest/springboot/CamelAzureFilesIT.java} |  14 +-
 .../itest/springboot/CamelAzureFilesTest.java      |  47 --
 .../itest/springboot/CamelAzureFunctionsIT.java}   |  14 +-
 .../itest/springboot/CamelAzureKeyVaultIT.java}    |  14 +-
 .../itest/springboot/CamelAzureKeyVaultTest.java   |  44 --
 .../itest/springboot/CamelAzureServicebusIT.java}  |  14 +-
 .../itest/springboot/CamelAzureServicebusTest.java |  44 --
 .../itest/springboot/CamelAzureStorageBlobIT.java} |  14 +-
 .../springboot/CamelAzureStorageBlobTest.java      |  44 --
 .../springboot/CamelAzureStorageDatalakeIT.java}   |  14 +-
 .../springboot/CamelAzureStorageDatalakeTest.java  |  44 --
 .../springboot/CamelAzureStorageQueueIT.java}      |  14 +-
 .../springboot/CamelAzureStorageQueueTest.java     |  44 --
 .../camel/itest/springboot/CamelBarcodeIT.java}    |  14 +-
 .../camel/itest/springboot/CamelBarcodeTest.java   |  44 --
 .../camel/itest/springboot/CamelBase64IT.java}     |  14 +-
 .../camel/itest/springboot/CamelBase64Test.java    |  44 --
 .../camel/itest/springboot/CamelBeanIT.java}       |  14 +-
 .../camel/itest/springboot/CamelBeanTest.java      |  44 --
 .../itest/springboot/CamelBeanValidatorIT.java}    |  14 +-
 .../itest/springboot/CamelBeanValidatorTest.java   |  44 --
 .../camel/itest/springboot/CamelBeanioIT.java}     |  14 +-
 .../camel/itest/springboot/CamelBeanioTest.java    |  44 --
 .../camel/itest/springboot/CamelBindyIT.java}      |  16 +-
 .../camel/itest/springboot/CamelBindyTest.java     |  46 --
 .../camel/itest/springboot/CamelBonitaIT.java}     |  14 +-
 .../camel/itest/springboot/CamelBonitaTest.java    |  44 --
 .../apache/camel/itest/springboot/CamelBoxIT.java} |  14 +-
 .../camel/itest/springboot/CamelBoxTest.java       |  47 --
 .../camel/itest/springboot/CamelBraintreeIT.java}  |  14 +-
 .../camel/itest/springboot/CamelBraintreeTest.java |  45 --
 .../camel/itest/springboot/CamelBrowseIT.java}     |  14 +-
 .../camel/itest/springboot/CamelBrowseTest.java    |  44 --
 .../camel/itest/springboot/CamelCaffeineIT.java}   |  15 +-
 .../camel/itest/springboot/CamelCaffeineTest.java  |  44 --
 .../itest/springboot/CamelCassandraqlIT.java}      |  14 +-
 .../itest/springboot/CamelCassandraqlTest.java     |  46 --
 .../camel/itest/springboot/CamelCborIT.java}       |  14 +-
 .../camel/itest/springboot/CamelCborTest.java      |  44 --
 .../camel/itest/springboot/CamelChatscriptIT.java} |  14 +-
 .../itest/springboot/CamelChatscriptTest.java      |  44 --
 .../camel/itest/springboot/CamelChunkIT.java}      |  14 +-
 .../camel/itest/springboot/CamelChunkTest.java     |  44 --
 .../camel/itest/springboot/CamelClickupIT.java}    |  14 +-
 .../camel/itest/springboot/CamelClickupTest.java   |  45 --
 .../itest/springboot/CamelCloudeventsTest.java     |  43 --
 .../camel/itest/springboot/CamelCmSmsIT.java}      |  14 +-
 .../camel/itest/springboot/CamelCmSmsTest.java     |  44 --
 .../camel/itest/springboot/CamelCoapIT.java}       |  14 +-
 .../camel/itest/springboot/CamelCoapTest.java      |  44 --
 .../camel/itest/springboot/CamelCometdIT.java}     |  14 +-
 .../camel/itest/springboot/CamelCometdTest.java    |  44 --
 .../camel/itest/springboot/CamelConsoleTest.java   |  43 --
 ...lTest.java => CamelConsulClusterServiceIT.java} |  30 +-
 .../springboot/CamelConsulClusterServiceTest.java  |  44 --
 .../camel/itest/springboot/CamelConsulIT.java}     |  14 +-
 .../camel/itest/springboot/CamelConsulTest.java    |  44 --
 .../camel/itest/springboot/CamelControlbusIT.java} |  14 +-
 .../itest/springboot/CamelControlbusTest.java      |  44 --
 .../apache/camel/itest/springboot/CamelCoreIT.java |  58 ++
 .../camel/itest/springboot/CamelCoreTest.java      |  43 --
 .../camel/itest/springboot/CamelCouchbaseIT.java}  |  14 +-
 .../camel/itest/springboot/CamelCouchbaseTest.java |  44 --
 .../camel/itest/springboot/CamelCouchdbIT.java}    |  14 +-
 .../camel/itest/springboot/CamelCouchdbTest.java   |  44 --
 .../camel/itest/springboot/CamelCronIT.java}       |  14 +-
 .../camel/itest/springboot/CamelCronTest.java      |  44 --
 .../camel/itest/springboot/CamelCryptoIT.java}     |  14 +-
 .../camel/itest/springboot/CamelCryptoPgpIT.java}  |  14 +-
 .../camel/itest/springboot/CamelCryptoPgpTest.java |  44 --
 .../camel/itest/springboot/CamelCryptoTest.java    |  46 --
 .../itest/springboot/CamelCsimpleJoorIT.java}      |  14 +-
 .../itest/springboot/CamelCsimpleJoorTest.java     |  44 --
 .../apache/camel/itest/springboot/CamelCsvIT.java} |  14 +-
 .../camel/itest/springboot/CamelCsvTest.java       |  44 --
 .../{util/JarExporter.java => CamelCxfRestIT.java} |  31 +-
 .../camel/itest/springboot/CamelCxfRestTest.java   |  43 --
 .../camel/itest/springboot/CamelCxfSoapIT.java}    |  20 +-
 .../camel/itest/springboot/CamelCxfSoapTest.java   |  43 --
 .../itest/springboot/CamelCxfTransportTest.java    |  44 --
 .../itest/springboot/CamelCyberarkVaultIT.java}    |  14 +-
 .../itest/springboot/CamelCyberarkVaultTest.java   |  44 --
 .../camel/itest/springboot/CamelDaprIT.java}       |  14 +-
 .../camel/itest/springboot/CamelDaprTest.java      |  44 --
 .../camel/itest/springboot/CamelDataformatIT.java} |  14 +-
 .../itest/springboot/CamelDataformatTest.java      |  43 --
 .../camel/itest/springboot/CamelDatasetIT.java}    |  14 +-
 .../camel/itest/springboot/CamelDatasetTest.java   |  44 --
 .../camel/itest/springboot/CamelDatasonnetIT.java} |  14 +-
 .../itest/springboot/CamelDatasonnetTest.java      |  44 --
 .../itest/springboot/CamelDebeziumDb2IT.java}      |  14 +-
 .../itest/springboot/CamelDebeziumDb2Test.java     |  44 --
 .../itest/springboot/CamelDebeziumMongodbIT.java}  |  14 +-
 .../itest/springboot/CamelDebeziumMongodbTest.java |  45 --
 .../itest/springboot/CamelDebeziumMysqlIT.java}    |  14 +-
 .../itest/springboot/CamelDebeziumMysqlTest.java   |  43 --
 .../itest/springboot/CamelDebeziumOracleIT.java}   |  14 +-
 .../itest/springboot/CamelDebeziumOracleTest.java  |  48 --
 .../itest/springboot/CamelDebeziumPostgresIT.java} |  14 +-
 .../springboot/CamelDebeziumPostgresTest.java      |  43 --
 .../springboot/CamelDebeziumSqlserverIT.java}      |  14 +-
 .../springboot/CamelDebeziumSqlserverTest.java     |  43 --
 .../camel/itest/springboot/CamelDebugTest.java     |  43 --
 .../camel/itest/springboot/CamelDfdlIT.java}       |  14 +-
 .../camel/itest/springboot/CamelDfdlTest.java      |  44 --
 .../camel/itest/springboot/CamelDhis2IT.java}      |  14 +-
 .../camel/itest/springboot/CamelDhis2Test.java     |  44 --
 .../itest/springboot/CamelDigitaloceanIT.java}     |  14 +-
 .../itest/springboot/CamelDigitaloceanTest.java    |  44 --
 .../camel/itest/springboot/CamelDirectIT.java}     |  14 +-
 .../camel/itest/springboot/CamelDirectTest.java    |  44 --
 .../camel/itest/springboot/CamelDisruptorIT.java}  |  15 +-
 .../camel/itest/springboot/CamelDisruptorTest.java |  48 --
 .../apache/camel/itest/springboot/CamelDjlIT.java} |  14 +-
 .../apache/camel/itest/springboot/CamelDnsIT.java} |  14 +-
 .../camel/itest/springboot/CamelDnsTest.java       |  44 --
 .../camel/itest/springboot/CamelDockerIT.java}     |  14 +-
 .../camel/itest/springboot/CamelDockerTest.java    |  44 --
 .../camel/itest/springboot/CamelDoclingIT.java}    |  14 +-
 .../camel/itest/springboot/CamelDoclingTest.java   |  44 --
 .../camel/itest/springboot/CamelDrillIT.java}      |  14 +-
 .../camel/itest/springboot/CamelDrillTest.java     |  44 --
 .../camel/itest/springboot/CamelDropboxIT.java}    |  14 +-
 .../camel/itest/springboot/CamelDropboxTest.java   |  44 --
 .../itest/springboot/CamelDynamicRouterIT.java}    |  15 +-
 .../itest/springboot/CamelDynamicRouterTest.java   |  44 --
 .../camel/itest/springboot/CamelEhcacheIT.java}    |  14 +-
 .../camel/itest/springboot/CamelEhcacheTest.java   |  44 --
 .../itest/springboot/CamelElasticsearchIT.java}    |  14 +-
 .../CamelElasticsearchRestClientIT.java}           |  14 +-
 .../CamelElasticsearchRestClientTest.java          |  44 --
 .../springboot/CamelElasticsearchRestTest.java     |  48 --
 .../itest/springboot/CamelElasticsearchTest.java   |  48 --
 .../camel/itest/springboot/CamelExecIT.java}       |  14 +-
 .../camel/itest/springboot/CamelExecTest.java      |  47 --
 .../camel/itest/springboot/CamelFastjsonIT.java}   |  14 +-
 .../camel/itest/springboot/CamelFastjsonTest.java  |  44 --
 .../camel/itest/springboot/CamelFhirIT.java}       |  18 +-
 .../camel/itest/springboot/CamelFhirTest.java      |  46 --
 ...vusTest.java => CamelFileClusterServiceIT.java} |  30 +-
 .../springboot/CamelFileClusterServiceTest.java    |  43 --
 .../camel/itest/springboot/CamelFileIT.java}       |  14 +-
 .../camel/itest/springboot/CamelFileTest.java      |  44 --
 .../camel/itest/springboot/CamelFileWatchIT.java}  |  14 +-
 .../camel/itest/springboot/CamelFileWatchTest.java |  44 --
 .../camel/itest/springboot/CamelFlatpackIT.java}   |  14 +-
 .../camel/itest/springboot/CamelFlatpackTest.java  |  44 --
 .../camel/itest/springboot/CamelFlinkIT.java}      |  14 +-
 .../camel/itest/springboot/CamelFlinkTest.java     |  46 --
 .../camel/itest/springboot/CamelFlowableIT.java}   |  14 +-
 .../camel/itest/springboot/CamelFlowableTest.java  |  44 --
 .../apache/camel/itest/springboot/CamelFopIT.java} |  14 +-
 .../camel/itest/springboot/CamelFopTest.java       |  44 --
 .../camel/itest/springboot/CamelForyIT.java}       |  14 +-
 .../camel/itest/springboot/CamelForyTest.java      |  44 --
 .../camel/itest/springboot/CamelFreemarkerIT.java} |  14 +-
 .../itest/springboot/CamelFreemarkerTest.java      |  44 --
 .../apache/camel/itest/springboot/CamelFtpIT.java} |  16 +-
 .../camel/itest/springboot/CamelFtpTest.java       |  48 --
 .../camel/itest/springboot/CamelGeocoderIT.java}   |  14 +-
 .../camel/itest/springboot/CamelGeocoderTest.java  |  44 --
 .../apache/camel/itest/springboot/CamelGitIT.java} |  14 +-
 .../camel/itest/springboot/CamelGitTest.java       |  44 --
 .../camel/itest/springboot/CamelGithub2IT.java}    |  14 +-
 .../camel/itest/springboot/CamelGithub2Test.java   |  44 --
 .../camel/itest/springboot/CamelGithubIT.java}     |  14 +-
 .../camel/itest/springboot/CamelGithubTest.java    |  44 --
 .../itest/springboot/CamelGoogleBigqueryIT.java}   |  15 +-
 .../itest/springboot/CamelGoogleBigqueryTest.java  |  43 --
 .../itest/springboot/CamelGoogleCalendarIT.java}   |  15 +-
 .../itest/springboot/CamelGoogleCalendarTest.java  |  45 --
 .../itest/springboot/CamelGoogleDriveIT.java}      |  14 +-
 .../itest/springboot/CamelGoogleDriveTest.java     |  44 --
 .../itest/springboot/CamelGoogleFirestoreIT.java}  |  14 +-
 .../itest/springboot/CamelGoogleFunctionsIT.java}  |  14 +-
 .../itest/springboot/CamelGoogleFunctionsTest.java |  43 --
 .../camel/itest/springboot/CamelGoogleMailIT.java} |  15 +-
 .../itest/springboot/CamelGoogleMailTest.java      |  46 --
 .../itest/springboot/CamelGooglePubsubIT.java}     |  14 +-
 .../springboot/CamelGooglePubsubLiteTest.java      |  44 --
 .../itest/springboot/CamelGooglePubsubTest.java    |  51 --
 .../springboot/CamelGoogleSecretManagerIT.java}    |  14 +-
 .../springboot/CamelGoogleSecretManagerTest.java   |  44 --
 .../itest/springboot/CamelGoogleSheetsIT.java}     |  15 +-
 .../itest/springboot/CamelGoogleSheetsTest.java    |  46 --
 .../itest/springboot/CamelGoogleStorageIT.java}    |  14 +-
 .../itest/springboot/CamelGoogleStorageTest.java   |  43 --
 .../itest/springboot/CamelGoogleVertexaiIT.java}   |  14 +-
 .../itest/springboot/CamelGoogleVertexaiTest.java  |  44 --
 .../camel/itest/springboot/CamelGrapeIT.java}      |  14 +-
 .../camel/itest/springboot/CamelGrapeTest.java     |  44 --
 .../camel/itest/springboot/CamelGraphqlIT.java}    |  14 +-
 .../camel/itest/springboot/CamelGraphqlTest.java   |  44 --
 .../camel/itest/springboot/CamelGrokIT.java}       |  14 +-
 .../camel/itest/springboot/CamelGrokTest.java      |  44 --
 .../camel/itest/springboot/CamelGroovyIT.java}     |  14 +-
 .../camel/itest/springboot/CamelGroovyTest.java    |  45 --
 .../camel/itest/springboot/CamelGroovyXmlIT.java}  |  14 +-
 .../camel/itest/springboot/CamelGroovyXmlTest.java |  43 --
 .../camel/itest/springboot/CamelGrpcIT.java}       |  14 +-
 .../camel/itest/springboot/CamelGrpcTest.java      |  44 --
 .../camel/itest/springboot/CamelGsonIT.java}       |  14 +-
 .../camel/itest/springboot/CamelGsonTest.java      |  44 --
 .../itest/springboot/CamelGuavaEventbusIT.java}    |  14 +-
 .../itest/springboot/CamelGuavaEventbusTest.java   |  44 --
 .../itest/springboot/CamelHashicorpVaultIT.java}   |  14 +-
 .../itest/springboot/CamelHashicorpVaultTest.java  |  44 --
 .../JarExporter.java => CamelHazelcastIT.java}     |  33 +-
 .../camel/itest/springboot/CamelHazelcastTest.java |  60 --
 .../apache/camel/itest/springboot/CamelHl7IT.java} |  17 +-
 .../camel/itest/springboot/CamelHl7Test.java       |  44 --
 .../camel/itest/springboot/CamelHttpIT.java}       |  14 +-
 .../camel/itest/springboot/CamelHttpTest.java      |  44 --
 .../itest/springboot/CamelHuaweicloudDmsIT.java}   |  14 +-
 .../itest/springboot/CamelHuaweicloudDmsTest.java  |  44 --
 .../itest/springboot/CamelHuaweicloudFrsIT.java}   |  14 +-
 .../itest/springboot/CamelHuaweicloudFrsTest.java  |  44 --
 .../CamelHuaweicloudFunctiongraphIT.java}          |  14 +-
 .../CamelHuaweicloudFunctiongraphTest.java         |  44 --
 .../itest/springboot/CamelHuaweicloudIamIT.java}   |  14 +-
 .../itest/springboot/CamelHuaweicloudIamTest.java  |  44 --
 .../CamelHuaweicloudImagerecognitionIT.java}       |  14 +-
 .../CamelHuaweicloudImagerecognitionTest.java      |  44 --
 .../itest/springboot/CamelHuaweicloudObsIT.java}   |  14 +-
 .../itest/springboot/CamelHuaweicloudObsTest.java  |  44 --
 .../itest/springboot/CamelHuaweicloudSmnIT.java}   |  14 +-
 .../itest/springboot/CamelHuaweicloudSmnTest.java  |  43 --
 .../camel/itest/springboot/CamelIbmCosIT.java}     |  14 +-
 .../camel/itest/springboot/CamelIbmCosTest.java    |  44 --
 .../springboot/CamelIbmSecretsManagerIT.java}      |  14 +-
 .../springboot/CamelIbmSecretsManagerTest.java     |  44 --
 .../springboot/CamelIbmWatsonDiscoveryIT.java}     |  14 +-
 .../springboot/CamelIbmWatsonDiscoveryTest.java    |  44 --
 .../springboot/CamelIbmWatsonLanguageIT.java}      |  14 +-
 .../springboot/CamelIbmWatsonLanguageTest.java     |  44 --
 .../springboot/CamelIbmWatsonSpeechToTextIT.java}  |  14 +-
 .../springboot/CamelIbmWatsonSpeechToTextTest.java |  44 --
 .../springboot/CamelIbmWatsonTextToSpeechIT.java}  |  14 +-
 .../springboot/CamelIbmWatsonTextToSpeechTest.java |  44 --
 .../itest/springboot/CamelIbmWatsonxAiIT.java}     |  14 +-
 .../itest/springboot/CamelIbmWatsonxAiTest.java    |  44 --
 .../camel/itest/springboot/CamelIcalIT.java}       |  14 +-
 .../camel/itest/springboot/CamelIcalTest.java      |  44 --
 .../camel/itest/springboot/CamelIec60870IT.java}   |  15 +-
 .../camel/itest/springboot/CamelIec60870Test.java  |  44 --
 .../camel/itest/springboot/CamelIggyIT.java}       |  14 +-
 .../camel/itest/springboot/CamelIggyTest.java      |  44 --
 .../camel/itest/springboot/CamelIgniteIT.java}     |  24 +-
 .../camel/itest/springboot/CamelIgniteTest.java    |  46 --
 ...t.java => CamelInfinispanClusterServiceIT.java} |  30 +-
 .../CamelInfinispanClusterServiceTest.java         |  43 --
 .../springboot/CamelInfinispanEmbeddedIT.java}     |  14 +-
 .../springboot/CamelInfinispanEmbeddedTest.java    |  64 --
 .../camel/itest/springboot/CamelInfinispanIT.java} |  14 +-
 .../itest/springboot/CamelInfinispanTest.java      |  64 --
 .../camel/itest/springboot/CamelInfluxdb2IT.java}  |  14 +-
 .../camel/itest/springboot/CamelInfluxdb2Test.java |  44 --
 .../camel/itest/springboot/CamelInfluxdbIT.java}   |  14 +-
 .../camel/itest/springboot/CamelInfluxdbTest.java  |  45 --
 .../camel/itest/springboot/CamelIotaTest.java      |  46 --
 .../apache/camel/itest/springboot/CamelIrcIT.java} |  14 +-
 .../camel/itest/springboot/CamelIrcTest.java       |  44 --
 .../camel/itest/springboot/CamelIronmqIT.java}     |  14 +-
 .../camel/itest/springboot/CamelIronmqTest.java    |  44 --
 .../camel/itest/springboot/CamelIso8583IT.java}    |  14 +-
 .../camel/itest/springboot/CamelIso8583Test.java   |  44 --
 .../itest/springboot/CamelJacksonAvroIT.java}      |  14 +-
 .../itest/springboot/CamelJacksonAvroTest.java     |  44 --
 .../camel/itest/springboot/CamelJacksonIT.java}    |  14 +-
 .../itest/springboot/CamelJacksonProtobufIT.java}  |  14 +-
 .../itest/springboot/CamelJacksonProtobufTest.java |  44 --
 .../camel/itest/springboot/CamelJacksonTest.java   |  44 --
 .../camel/itest/springboot/CamelJacksonxmlIT.java} |  14 +-
 .../itest/springboot/CamelJacksonxmlTest.java      |  44 --
 .../camel/itest/springboot/CamelJandexTest.java    |  43 --
 .../camel/itest/springboot/CamelJasyptTest.java    |  47 --
 .../camel/itest/springboot/CamelJavascriptIT.java} |  14 +-
 .../itest/springboot/CamelJavascriptTest.java      |  44 --
 .../camel/itest/springboot/CamelJaxbIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJaxbTest.java      |  44 --
 .../camel/itest/springboot/CamelJcacheIT.java}     |  14 +-
 .../camel/itest/springboot/CamelJcacheTest.java    |  44 --
 .../apache/camel/itest/springboot/CamelJcrIT.java} |  14 +-
 .../camel/itest/springboot/CamelJcrTest.java       |  47 --
 .../camel/itest/springboot/CamelJdbcIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJdbcTest.java      |  44 --
 .../camel/itest/springboot/CamelJettyIT.java}      |  14 +-
 .../camel/itest/springboot/CamelJettyTest.java     |  44 --
 .../camel/itest/springboot/CamelJgroupsIT.java}    |  14 +-
 ....java => CamelJgroupsRaftClusterServiceIT.java} |  30 +-
 .../CamelJgroupsRaftClusterServiceTest.java        |  43 --
 .../itest/springboot/CamelJgroupsRaftIT.java}      |  14 +-
 .../itest/springboot/CamelJgroupsRaftTest.java     |  44 --
 .../camel/itest/springboot/CamelJgroupsTest.java   |  44 --
 .../camel/itest/springboot/CamelJiraIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJiraTest.java      |  44 --
 .../apache/camel/itest/springboot/CamelJmsIT.java} |  14 +-
 .../camel/itest/springboot/CamelJmsTest.java       |  48 --
 .../apache/camel/itest/springboot/CamelJmxIT.java} |  14 +-
 .../camel/itest/springboot/CamelJmxTest.java       |  44 --
 .../camel/itest/springboot/CamelJolokiaTest.java   |  43 --
 .../camel/itest/springboot/CamelJoltIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJoltTest.java      |  44 --
 .../camel/itest/springboot/CamelJooqIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJooqTest.java      |  44 --
 .../camel/itest/springboot/CamelJoorIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJoorTest.java      |  44 --
 .../apache/camel/itest/springboot/CamelJpaIT.java} |  14 +-
 .../camel/itest/springboot/CamelJpaTest.java       |  43 --
 .../apache/camel/itest/springboot/CamelJqIT.java}  |  14 +-
 .../apache/camel/itest/springboot/CamelJqTest.java |  44 --
 .../camel/itest/springboot/CamelJschIT.java}       |  14 +-
 .../camel/itest/springboot/CamelJschTest.java      |  44 --
 .../CustomJMXProtocol.java => CamelJsltIT.java}    |  22 +-
 .../camel/itest/springboot/CamelJsltTest.java      |  44 --
 .../camel/itest/springboot/CamelJsonPatchIT.java}  |  14 +-
 .../camel/itest/springboot/CamelJsonPatchTest.java |  44 --
 .../itest/springboot/CamelJsonValidatorIT.java}    |  14 +-
 .../itest/springboot/CamelJsonValidatorTest.java   |  44 --
 .../camel/itest/springboot/CamelJsonapiIT.java}    |  14 +-
 .../camel/itest/springboot/CamelJsonapiTest.java   |  44 --
 .../camel/itest/springboot/CamelJsonataIT.java}    |  14 +-
 .../camel/itest/springboot/CamelJsonataTest.java   |  44 --
 .../camel/itest/springboot/CamelJsonbIT.java}      |  14 +-
 .../camel/itest/springboot/CamelJsonbTest.java     |  44 --
 .../camel/itest/springboot/CamelJsonpathIT.java}   |  14 +-
 .../camel/itest/springboot/CamelJsonpathTest.java  |  44 --
 .../camel/itest/springboot/CamelJt400IT.java}      |  14 +-
 .../camel/itest/springboot/CamelJt400Test.java     |  44 --
 .../apache/camel/itest/springboot/CamelJteIT.java} |  14 +-
 .../camel/itest/springboot/CamelJteTest.java       |  44 --
 .../camel/itest/springboot/CamelKafkaIT.java}      |  14 +-
 .../camel/itest/springboot/CamelKafkaTest.java     |  45 --
 .../camel/itest/springboot/CamelKameletIT.java}    |  14 +-
 .../camel/itest/springboot/CamelKameletTest.java   |  44 --
 .../camel/itest/springboot/CamelKeycloakIT.java}   |  14 +-
 .../camel/itest/springboot/CamelKeycloakTest.java  |  44 --
 .../camel/itest/springboot/CamelKnativeIT.java}    |  14 +-
 .../camel/itest/springboot/CamelKnativeTest.java   |  44 --
 .../camel/itest/springboot/CamelKserveIT.java}     |  14 +-
 .../camel/itest/springboot/CamelKserveTest.java    |  44 --
 ...r.java => CamelKubernetesClusterServiceIT.java} |  33 +-
 .../CamelKubernetesClusterServiceTest.java         |  43 --
 .../camel/itest/springboot/CamelKubernetesIT.java  |  47 ++
 .../itest/springboot/CamelKubernetesTest.java      |  63 --
 .../camel/itest/springboot/CamelKuduIT.java}       |  14 +-
 .../camel/itest/springboot/CamelKuduTest.java      |  47 --
 .../itest/springboot/CamelLangchain4jAgentIT.java} |  14 +-
 .../springboot/CamelLangchain4jAgentTest.java      |  44 --
 .../itest/springboot/CamelLangchain4jChatIT.java}  |  14 +-
 .../itest/springboot/CamelLangchain4jChatTest.java |  44 --
 .../springboot/CamelLangchain4jEmbeddingsIT.java}  |  14 +-
 .../springboot/CamelLangchain4jEmbeddingsTest.java |  44 --
 .../CamelLangchain4jEmbeddingstoreIT.java}         |  14 +-
 .../CamelLangchain4jEmbeddingstoreTest.java        |  44 --
 .../springboot/CamelLangchain4jTokenizerTest.java  |  43 --
 .../itest/springboot/CamelLangchain4jToolsIT.java} |  14 +-
 .../springboot/CamelLangchain4jToolsTest.java      |  44 --
 .../springboot/CamelLangchain4jWebSearchIT.java}   |  14 +-
 .../springboot/CamelLangchain4jWebSearchTest.java  |  44 --
 .../camel/itest/springboot/CamelLanguageIT.java}   |  14 +-
 .../camel/itest/springboot/CamelLanguageTest.java  |  43 --
 .../camel/itest/springboot/CamelLdapIT.java}       |  14 +-
 .../camel/itest/springboot/CamelLdapTest.java      |  44 --
 .../camel/itest/springboot/CamelLdifIT.java}       |  14 +-
 .../camel/itest/springboot/CamelLdifTest.java      |  44 --
 .../camel/itest/springboot/CamelLeveldbTest.java   |  44 --
 .../apache/camel/itest/springboot/CamelLogIT.java} |  14 +-
 .../camel/itest/springboot/CamelLogTest.java       |  44 --
 .../apache/camel/itest/springboot/CamelLraIT.java} |  16 +-
 .../camel/itest/springboot/CamelLraTest.java       |  45 --
 .../camel/itest/springboot/CamelLuceneIT.java}     |  14 +-
 .../camel/itest/springboot/CamelLuceneTest.java    |  44 --
 .../camel/itest/springboot/CamelLumberjackIT.java} |  14 +-
 .../itest/springboot/CamelLumberjackTest.java      |  44 --
 .../apache/camel/itest/springboot/CamelLzfIT.java} |  14 +-
 .../camel/itest/springboot/CamelLzfTest.java       |  45 --
 .../camel/itest/springboot/CamelMailIT.java}       |  19 +-
 .../springboot/CamelMailMicrosoftOauthTest.java    |  43 --
 .../camel/itest/springboot/CamelMailTest.java      |  48 --
 .../itest/springboot/CamelManagementTest.java      |  43 --
 .../camel/itest/springboot/CamelMapstructIT.java}  |  14 +-
 .../camel/itest/springboot/CamelMapstructTest.java |  44 --
 .../{CamelPineconeTest.java => CamelMasterIT.java} |  30 +-
 .../camel/itest/springboot/CamelMasterTest.java    |  43 --
 .../camel/itest/springboot/CamelMetricsIT.java}    |  14 +-
 .../camel/itest/springboot/CamelMetricsTest.java   |  44 --
 .../camel/itest/springboot/CamelMicrometerIT.java} |  14 +-
 .../CamelMicrometerObservabilityTest.java          |  43 --
 .../itest/springboot/CamelMicrometerTest.java      |  44 --
 .../camel/itest/springboot/CamelMiloIT.java}       |  16 +-
 .../camel/itest/springboot/CamelMiloTest.java      |  46 --
 .../camel/itest/springboot/CamelMilvusIT.java}     |  14 +-
 .../camel/itest/springboot/CamelMinaIT.java}       |  14 +-
 .../camel/itest/springboot/CamelMinaSftpIT.java}   |  14 +-
 .../camel/itest/springboot/CamelMinaSftpTest.java  |  44 --
 .../camel/itest/springboot/CamelMinaTest.java      |  45 --
 .../camel/itest/springboot/CamelMinioIT.java}      |  14 +-
 .../camel/itest/springboot/CamelMinioTest.java     |  44 --
 .../camel/itest/springboot/CamelMllpIT.java}       |  14 +-
 .../camel/itest/springboot/CamelMllpTest.java      |  45 --
 .../camel/itest/springboot/CamelMockIT.java}       |  14 +-
 .../camel/itest/springboot/CamelMockTest.java      |  44 --
 .../itest/springboot/CamelMongodbGridfsIT.java}    |   9 +-
 .../itest/springboot/CamelMongodbGridfsTest.java   |  45 --
 .../camel/itest/springboot/CamelMongodbIT.java}    |   9 +-
 .../camel/itest/springboot/CamelMongodbTest.java   |  45 --
 .../camel/itest/springboot/CamelMustacheIT.java}   |  14 +-
 .../camel/itest/springboot/CamelMustacheTest.java  |  44 --
 .../camel/itest/springboot/CamelMvelIT.java}       |  14 +-
 .../camel/itest/springboot/CamelMvelTest.java      |  44 --
 .../camel/itest/springboot/CamelMybatisIT.java}    |  15 +-
 .../camel/itest/springboot/CamelMybatisTest.java   |  45 --
 .../camel/itest/springboot/CamelNatsIT.java}       |  14 +-
 .../camel/itest/springboot/CamelNatsTest.java      |  44 --
 .../camel/itest/springboot/CamelNeo4jIT.java}      |  14 +-
 .../camel/itest/springboot/CamelNeo4jTest.java     |  44 --
 .../camel/itest/springboot/CamelNettyHttpIT.java}  |  14 +-
 .../camel/itest/springboot/CamelNettyHttpTest.java |  50 --
 .../camel/itest/springboot/CamelNettyIT.java}      |  14 +-
 .../camel/itest/springboot/CamelNettyTest.java     |  45 --
 .../camel/itest/springboot/CamelNitriteIT.java}    |  14 +-
 .../camel/itest/springboot/CamelNitriteTest.java   |  45 --
 .../camel/itest/springboot/CamelOaipmhIT.java}     |  14 +-
 .../camel/itest/springboot/CamelOaipmhTest.java    |  44 --
 .../springboot/CamelObservabilityServicesTest.java |  43 --
 .../itest/springboot/CamelObservationTest.java     |  43 --
 .../camel/itest/springboot/CamelOcsfIT.java}       |  14 +-
 .../camel/itest/springboot/CamelOcsfTest.java      |  43 --
 .../camel/itest/springboot/CamelOgnlIT.java}       |  14 +-
 .../camel/itest/springboot/CamelOgnlTest.java      |  44 --
 .../camel/itest/springboot/CamelOlingo2IT.java}    |  14 +-
 .../camel/itest/springboot/CamelOlingo2Test.java   |  47 --
 .../camel/itest/springboot/CamelOlingo4IT.java}    |  14 +-
 .../camel/itest/springboot/CamelOlingo4Test.java   |  47 --
 .../camel/itest/springboot/CamelOnceIT.java}       |  14 +-
 .../camel/itest/springboot/CamelOnceTest.java      |  44 --
 .../camel/itest/springboot/CamelOpenaiIT.java}     |  14 +-
 .../camel/itest/springboot/CamelOpenaiTest.java    |  44 --
 .../itest/springboot/CamelOpenapiJavaTest.java     |  44 --
 .../springboot/CamelOpenapiValidatorTest.java      |  43 --
 .../camel/itest/springboot/CamelOpensearchIT.java} |  14 +-
 .../itest/springboot/CamelOpensearchTest.java      |  45 --
 .../camel/itest/springboot/CamelOpenstackIT.java}  |  23 +-
 .../camel/itest/springboot/CamelOpenstackTest.java |  49 --
 .../itest/springboot/CamelOpentelemetry2Test.java  |  44 --
 .../itest/springboot/CamelOpentelemetryIT.java}    |   9 +-
 .../springboot/CamelOpentelemetryMetricsIT.java    |  52 ++
 .../springboot/CamelOpentelemetryMetricsTest.java  |  46 --
 .../itest/springboot/CamelOpentelemetryTest.java   |  50 --
 .../itest/springboot/CamelOptaplannerIT.java}      |  14 +-
 .../itest/springboot/CamelOptaplannerTest.java     |  44 --
 .../camel/itest/springboot/CamelPahoIT.java}       |  14 +-
 .../camel/itest/springboot/CamelPahoMqtt5IT.java}  |  14 +-
 .../camel/itest/springboot/CamelPahoMqtt5Test.java |  44 --
 .../camel/itest/springboot/CamelPahoTest.java      |  44 --
 .../itest/springboot/CamelParquetAvroIT.java}      |  14 +-
 .../itest/springboot/CamelParquetAvroTest.java     |  44 --
 .../apache/camel/itest/springboot/CamelPdfIT.java} |  14 +-
 .../camel/itest/springboot/CamelPdfTest.java       |  44 --
 .../springboot/CamelPgReplicationSlotIT.java}      |  14 +-
 .../springboot/CamelPgReplicationSlotTest.java     |  45 --
 .../camel/itest/springboot/CamelPgeventIT.java}    |  14 +-
 .../camel/itest/springboot/CamelPgeventTest.java   |  45 --
 .../camel/itest/springboot/CamelPineconeIT.java}   |  14 +-
 .../itest/springboot/CamelPlatformHttpIT.java}     |  20 +-
 .../itest/springboot/CamelPlatformHttpTest.java    |  44 --
 .../camel/itest/springboot/CamelPlc4xIT.java}      |  14 +-
 .../camel/itest/springboot/CamelPlc4xTest.java     |  44 --
 .../apache/camel/itest/springboot/CamelPqcIT.java} |  17 +-
 .../camel/itest/springboot/CamelPqcTest.java       |  44 --
 .../camel/itest/springboot/CamelPrinterIT.java}    |  14 +-
 .../camel/itest/springboot/CamelPrinterTest.java   |  44 --
 .../camel/itest/springboot/CamelProtobufIT.java}   |  14 +-
 .../camel/itest/springboot/CamelProtobufTest.java  |  44 --
 .../camel/itest/springboot/CamelPubnubIT.java}     |  14 +-
 .../camel/itest/springboot/CamelPubnubTest.java    |  44 --
 .../camel/itest/springboot/CamelPulsarIT.java}     |  14 +-
 .../camel/itest/springboot/CamelPulsarTest.java    |  44 --
 .../camel/itest/springboot/CamelPythonIT.java}     |  14 +-
 .../camel/itest/springboot/CamelPythonTest.java    |  43 --
 .../camel/itest/springboot/CamelQdrantIT.java}     |  14 +-
 .../camel/itest/springboot/CamelQdrantTest.java    |  44 --
 .../camel/itest/springboot/CamelQuartzIT.java}     |  14 +-
 .../camel/itest/springboot/CamelQuartzTest.java    |  47 --
 .../camel/itest/springboot/CamelQuickfixIT.java}   |  14 +-
 .../camel/itest/springboot/CamelQuickfixTest.java  |  44 --
 .../itest/springboot/CamelReactiveStreamsIT.java}  |  14 +-
 .../itest/springboot/CamelReactiveStreamsTest.java |  45 --
 .../camel/itest/springboot/CamelReactorTest.java   |  45 --
 .../apache/camel/itest/springboot/CamelRefIT.java} |  14 +-
 .../camel/itest/springboot/CamelRefTest.java       |  44 --
 .../CamelResilience4jMicrometerTest.java           |  43 --
 .../itest/springboot/CamelResilience4jTest.java    |  46 --
 .../camel/itest/springboot/CamelRestIT.java}       |  15 +-
 .../itest/springboot/CamelRestOpenapiIT.java}      |  14 +-
 .../itest/springboot/CamelRestOpenapiTest.java     |  44 --
 .../camel/itest/springboot/CamelRestTest.java      |  45 --
 .../itest/springboot/CamelRobotframeworkIT.java}   |  14 +-
 .../itest/springboot/CamelRobotframeworkTest.java  |  44 --
 .../camel/itest/springboot/CamelRocketmqIT.java}   |  14 +-
 .../camel/itest/springboot/CamelRocketmqTest.java  |  44 --
 .../apache/camel/itest/springboot/CamelRssIT.java} |  17 +-
 .../camel/itest/springboot/CamelRssTest.java       |  44 --
 .../camel/itest/springboot/CamelRxjavaTest.java    |  43 --
 .../camel/itest/springboot/CamelSagaIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSagaTest.java      |  44 --
 .../camel/itest/springboot/CamelSalesforceIT.java} |  14 +-
 .../itest/springboot/CamelSalesforceTest.java      |  49 --
 .../itest/springboot/CamelSapNetweaverIT.java}     |  14 +-
 .../itest/springboot/CamelSapNetweaverTest.java    |  46 --
 .../camel/itest/springboot/CamelSaxonIT.java}      |  17 +-
 .../camel/itest/springboot/CamelSaxonTest.java     |  46 --
 .../camel/itest/springboot/CamelSchedulerIT.java}  |  14 +-
 .../camel/itest/springboot/CamelSchedulerTest.java |  44 --
 .../camel/itest/springboot/CamelSchematronIT.java} |  14 +-
 .../itest/springboot/CamelSchematronTest.java      |  44 --
 .../camel/itest/springboot/CamelSedaIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSedaTest.java      |  44 --
 .../camel/itest/springboot/CamelServiceIT.java}    |  14 +-
 .../camel/itest/springboot/CamelServiceTest.java   |  44 --
 .../camel/itest/springboot/CamelServicenowIT.java} |  14 +-
 .../itest/springboot/CamelServicenowTest.java      |  46 --
 .../camel/itest/springboot/CamelServletIT.java}    |  20 +-
 .../camel/itest/springboot/CamelServletTest.java   |  50 --
 .../camel/itest/springboot/CamelShiroTest.java     |  44 --
 .../camel/itest/springboot/CamelSjms2IT.java}      |  14 +-
 .../camel/itest/springboot/CamelSjms2Test.java     |  44 --
 .../camel/itest/springboot/CamelSjmsIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSjmsTest.java      |  54 --
 .../camel/itest/springboot/CamelSlackIT.java}      |  14 +-
 .../camel/itest/springboot/CamelSlackTest.java     |  48 --
 .../apache/camel/itest/springboot/CamelSmbIT.java} |  14 +-
 .../camel/itest/springboot/CamelSmbTest.java       |  45 --
 .../camel/itest/springboot/CamelSmooksIT.java}     |  17 +-
 .../camel/itest/springboot/CamelSmooksTest.java    |  44 --
 .../camel/itest/springboot/CamelSmppIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSmppTest.java      |  47 --
 .../camel/itest/springboot/CamelSnakeyamlIT.java}  |  14 +-
 .../camel/itest/springboot/CamelSnakeyamlTest.java |  45 --
 .../camel/itest/springboot/CamelSnmpIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSnmpTest.java      |  44 --
 .../camel/itest/springboot/CamelSoapIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSoapTest.java      |  45 --
 .../camel/itest/springboot/CamelSolrIT.java}       |  14 +-
 .../camel/itest/springboot/CamelSolrTest.java      |  44 --
 .../camel/itest/springboot/CamelSplunkHecIT.java}  |  14 +-
 .../camel/itest/springboot/CamelSplunkHecTest.java |  44 --
 .../camel/itest/springboot/CamelSplunkIT.java}     |  14 +-
 .../camel/itest/springboot/CamelSplunkTest.java    |  44 --
 .../itest/springboot/CamelSpringAiChatIT.java}     |  14 +-
 .../itest/springboot/CamelSpringAiChatTest.java    |  44 --
 .../springboot/CamelSpringAiEmbeddingsIT.java}     |  14 +-
 .../springboot/CamelSpringAiEmbeddingsTest.java    |  44 --
 .../itest/springboot/CamelSpringAiToolsIT.java}    |  14 +-
 .../itest/springboot/CamelSpringAiToolsTest.java   |  44 --
 .../springboot/CamelSpringAiVectorStoreIT.java}    |  14 +-
 .../springboot/CamelSpringAiVectorStoreTest.java   |  44 --
 .../itest/springboot/CamelSpringBatchIT.java}      |  14 +-
 .../itest/springboot/CamelSpringBatchTest.java     |  44 --
 .../springboot/CamelSpringCloudConfigTest.java     |  45 --
 .../camel/itest/springboot/CamelSpringIT.java}     |  17 +-
 .../springboot/CamelSpringIntegrationTest.java     |  44 --
 .../camel/itest/springboot/CamelSpringJdbcIT.java} |  20 +-
 .../itest/springboot/CamelSpringJdbcTest.java      |  47 --
 .../camel/itest/springboot/CamelSpringLdapIT.java} |  14 +-
 .../itest/springboot/CamelSpringLdapTest.java      |  44 --
 .../itest/springboot/CamelSpringRabbitmqIT.java}   |  14 +-
 .../itest/springboot/CamelSpringRabbitmqTest.java  |  44 --
 .../itest/springboot/CamelSpringRedisIT.java}      |  14 +-
 .../itest/springboot/CamelSpringRedisTest.java     |  46 --
 .../itest/springboot/CamelSpringSecurityTest.java  |  44 --
 .../camel/itest/springboot/CamelSpringTest.java    |  47 --
 .../camel/itest/springboot/CamelSpringWsIT.java}   |  14 +-
 .../camel/itest/springboot/CamelSpringWsTest.java  |  47 --
 .../camel/itest/springboot/CamelSpringdocTest.java |  43 --
 .../apache/camel/itest/springboot/CamelSqlIT.java} |  15 +-
 .../camel/itest/springboot/CamelSqlTest.java       |  44 --
 .../apache/camel/itest/springboot/CamelSshIT.java} |  14 +-
 .../camel/itest/springboot/CamelSshTest.java       |  44 --
 .../camel/itest/springboot/CamelStaxIT.java}       |  17 +-
 .../camel/itest/springboot/CamelStaxTest.java      |  44 --
 .../camel/itest/springboot/CamelStitchIT.java}     |  14 +-
 .../camel/itest/springboot/CamelStitchTest.java    |  44 --
 .../camel/itest/springboot/CamelStompIT.java}      |  14 +-
 .../camel/itest/springboot/CamelStompTest.java     |  44 --
 .../camel/itest/springboot/CamelStreamIT.java}     |  14 +-
 .../camel/itest/springboot/CamelStreamTest.java    |  47 --
 .../itest/springboot/CamelStringtemplateIT.java}   |  14 +-
 .../itest/springboot/CamelStringtemplateTest.java  |  44 --
 .../camel/itest/springboot/CamelStripeIT.java}     |  14 +-
 .../camel/itest/springboot/CamelStripeTest.java    |  44 --
 .../camel/itest/springboot/CamelStubIT.java}       |  14 +-
 .../camel/itest/springboot/CamelStubTest.java      |  44 --
 .../camel/itest/springboot/CamelSwiftIT.java}      |  15 +-
 .../camel/itest/springboot/CamelSwiftTest.java     |  45 --
 .../camel/itest/springboot/CamelSyslogIT.java}     |  14 +-
 .../camel/itest/springboot/CamelSyslogTest.java    |  44 --
 .../camel/itest/springboot/CamelTahuIT.java}       |  15 +-
 .../camel/itest/springboot/CamelTahuTest.java      |  45 --
 .../camel/itest/springboot/CamelTarfileIT.java}    |  14 +-
 .../camel/itest/springboot/CamelTarfileTest.java   |  44 --
 .../camel/itest/springboot/CamelTelegramIT.java}   |  14 +-
 .../camel/itest/springboot/CamelTelegramTest.java  |  44 --
 .../itest/springboot/CamelTelemetryDevTest.java    |  43 --
 .../springboot/CamelTensorflowServingIT.java}      |  14 +-
 .../springboot/CamelTensorflowServingTest.java     |  44 --
 .../camel/itest/springboot/CamelThriftIT.java}     |  17 +-
 .../camel/itest/springboot/CamelThriftTest.java    |  45 --
 .../camel/itest/springboot/CamelThymeleafIT.java}  |  14 +-
 .../camel/itest/springboot/CamelThymeleafTest.java |  44 --
 .../camel/itest/springboot/CamelTikaIT.java}       |  14 +-
 .../camel/itest/springboot/CamelTikaTest.java      |  44 --
 .../camel/itest/springboot/CamelTimerIT.java}      |  14 +-
 .../camel/itest/springboot/CamelTimerTest.java     |  44 --
 .../camel/itest/springboot/CamelTorchserveIT.java} |  14 +-
 .../itest/springboot/CamelTorchserveTest.java      |  44 --
 .../camel/itest/springboot/CamelTwilioIT.java}     |  14 +-
 .../camel/itest/springboot/CamelTwilioTest.java    |  46 --
 .../camel/itest/springboot/CamelTwitterIT.java}    |  16 +-
 .../camel/itest/springboot/CamelTwitterTest.java   |  48 --
 .../camel/itest/springboot/CamelUndertowIT.java}   |  14 +-
 .../CamelUndertowSpringSecurityTest.java           |  46 --
 .../camel/itest/springboot/CamelUndertowTest.java  |  48 --
 .../itest/springboot/CamelUnivocityParsersIT.java} |  16 +-
 .../springboot/CamelUnivocityParsersTest.java      |  48 --
 .../camel/itest/springboot/CamelValidatorIT.java}  |  14 +-
 .../camel/itest/springboot/CamelValidatorTest.java |  44 --
 .../camel/itest/springboot/CamelVelocityIT.java}   |  14 +-
 .../camel/itest/springboot/CamelVelocityTest.java  |  44 --
 .../camel/itest/springboot/CamelVertxHttpIT.java}  |  14 +-
 .../camel/itest/springboot/CamelVertxHttpTest.java |  44 --
 .../camel/itest/springboot/CamelVertxIT.java}      |  14 +-
 .../camel/itest/springboot/CamelVertxTest.java     |  44 --
 .../itest/springboot/CamelVertxWebsocketIT.java}   |  14 +-
 .../itest/springboot/CamelVertxWebsocketTest.java  |  44 --
 .../camel/itest/springboot/CamelWasmIT.java}       |  17 +-
 .../camel/itest/springboot/CamelWasmTest.java      |  44 --
 .../camel/itest/springboot/CamelWeatherIT.java}    |  14 +-
 .../camel/itest/springboot/CamelWeatherTest.java   |  45 --
 .../camel/itest/springboot/CamelWeaviateIT.java}   |  14 +-
 .../camel/itest/springboot/CamelWeaviateTest.java  |  44 --
 .../camel/itest/springboot/CamelWeb3jIT.java}      |  14 +-
 .../camel/itest/springboot/CamelWeb3jTest.java     |  44 --
 .../camel/itest/springboot/CamelWebhookIT.java}    |  14 +-
 .../camel/itest/springboot/CamelWebhookTest.java   |  46 --
 .../camel/itest/springboot/CamelWhatsappIT.java}   |  14 +-
 .../camel/itest/springboot/CamelWhatsappTest.java  |  44 --
 .../camel/itest/springboot/CamelWordpressIT.java}  |  14 +-
 .../camel/itest/springboot/CamelWordpressTest.java |  44 --
 .../camel/itest/springboot/CamelWorkdayIT.java}    |  14 +-
 .../camel/itest/springboot/CamelWorkdayTest.java   |  44 --
 .../camel/itest/springboot/CamelXchangeIT.java}    |  14 +-
 .../camel/itest/springboot/CamelXchangeTest.java   |  44 --
 .../apache/camel/itest/springboot/CamelXjIT.java}  |  14 +-
 .../apache/camel/itest/springboot/CamelXjTest.java |  43 --
 .../camel/itest/springboot/CamelXmlJaxbTest.java   |  43 --
 .../camel/itest/springboot/CamelXmlJaxpTest.java   |  43 --
 .../itest/springboot/CamelXmlsecurityIT.java}      |  14 +-
 .../itest/springboot/CamelXmlsecurityTest.java     |  44 --
 .../camel/itest/springboot/CamelXmppIT.java}       |  14 +-
 .../camel/itest/springboot/CamelXmppTest.java      |  50 --
 .../camel/itest/springboot/CamelXpathIT.java}      |  14 +-
 .../camel/itest/springboot/CamelXpathTest.java     |  44 --
 .../camel/itest/springboot/CamelXsltIT.java}       |  14 +-
 .../camel/itest/springboot/CamelXsltSaxonIT.java}  |  14 +-
 .../camel/itest/springboot/CamelXsltSaxonTest.java |  44 --
 .../camel/itest/springboot/CamelXsltTest.java      |  44 --
 .../camel/itest/springboot/CamelZeebeIT.java}      |  14 +-
 .../camel/itest/springboot/CamelZeebeTest.java     |  44 --
 .../camel/itest/springboot/CamelZendeskIT.java}    |  14 +-
 .../camel/itest/springboot/CamelZendeskTest.java   |  44 --
 .../itest/springboot/CamelZipDeflaterIT.java}      |  15 +-
 .../itest/springboot/CamelZipDeflaterTest.java     |  45 --
 .../camel/itest/springboot/CamelZipfileIT.java}    |  14 +-
 .../camel/itest/springboot/CamelZipfileTest.java   |  44 --
 ...st.java => CamelZookeeperClusterServiceIT.java} |  31 +-
 .../CamelZookeeperClusterServiceTest.java          |  47 --
 .../camel/itest/springboot/CamelZookeeperIT.java}  |  14 +-
 .../itest/springboot/CamelZookeeperMasterIT.java}  |  14 +-
 .../itest/springboot/CamelZookeeperMasterTest.java |  44 --
 .../camel/itest/springboot/CamelZookeeperTest.java |  44 --
 .../arquillian/ArquillianSyncBootJarLauncher.java  | 109 ----
 .../arquillian/SpringBootZipExporterDelegate.java  |  50 --
 .../arquillian/SpringBootZipExporterImpl.java      |  46 --
 .../SpringBootZipOnDemandInputStream.java          | 222 -------
 .../container/ManagedSEContainerConfiguration.java | 102 ---
 .../container/ManagedSEContainerExtension.java     |  33 -
 .../container/ManagedSEDeployableContainer.java    | 419 ------------
 .../arquillian/container/SEContainerAppender.java  |  34 -
 .../container/jmx/TestDeploymentPackager.java      |  44 --
 .../arquillian/container/util/Await.java           |  78 ---
 .../container/util/FileDeploymentUtils.java        | 124 ----
 .../itest/springboot/catalog/CamelCatalogIT.java   | 139 ++++
 .../itest/springboot/util/ArquillianPackager.java  | 726 ---------------------
 .../camel/itest/springboot/util/BOMResolver.java   | 202 ------
 .../itest/springboot/util/DependencyResolver.java  | 182 ------
 .../camel/itest/springboot/util/LocationUtils.java |  51 --
 .../springboot/util/SpringBootContainerFacade.java |  65 --
 .../src/test/resources/BOOT-MANIFEST.MF            |   3 -
 ...org.jboss.arquillian.core.spi.LoadableExtension |   1 -
 .../src/test/resources/application-pom-sb3.xml     | 124 ----
 .../src/test/resources/application-pom-sb4.xml     | 135 ----
 .../src/test/resources/arquillian.xml              |  36 -
 .../test/resources/components/apns-clientStore.p12 | Bin 2483 -> 0 bytes
 .../test/resources/components/apns-serverStore.p12 | Bin 2483 -> 0 bytes
 .../test/resources/components/cache-ehcache.xml    | 305 ---------
 .../resources/components/ibatis-SqlMapConfig.xml   |  51 --
 .../resources/components/mybatis-SqlMapConfig.xml  |  51 --
 .../src/test/resources/jul.properties              |  72 --
 .../src/test/resources/logback-spring.xml          |  44 --
 .../src/test/resources/logback-test.xml            |  14 +
 .../src/test/resources/logging.properties          |  74 ---
 831 files changed, 4355 insertions(+), 25897 deletions(-)

diff --git a/tests/camel-itest-spring-boot/README.adoc b/tests/camel-itest-spring-boot/README.adoc
index 6a791b6dbb2..3cbc8c1a4a5 100644
--- a/tests/camel-itest-spring-boot/README.adoc
+++ b/tests/camel-itest-spring-boot/README.adoc
@@ -1,30 +1,229 @@
 = Camel Spring Boot Integration Tests
 
-The camel-itest-spring-boot module provides an integration testing framework for camel components, to check their compatibility with spring-boot.
+Integration tests that verify each Camel Spring Boot starter can be compiled, started, and its components resolved at runtime.
 
-Each test-case defined in `src/test/java/org/apache/camel/itest/springboot` executes the following steps:
+== How it works
 
-* Creates a spring-boot jar by putting the spring-boot loader, some utility classes in the main jar,
-and all other libraries (including the camel component under test) as nested jars;
-** Launches a new JVM including the spring-boot jar and test classes in the classpath, then starts the spring-boot platform;
-** Executes a list of predefined checks in the spring-boot environment to verify that the component has been created correctly:
-checks that the camel context has been created, that the camel components can be activated (including data format and languages).
+Each test class (e.g. `CamelActivemq6IT`) follows these steps:
 
-== Additional options
+. **Archetype generation** -- The `ArchetypeGenerationExtension` JUnit 6 extension generates a minimal Spring Boot project from `camel-archetype-spring-boot`. The generated project is then customized: test-scoped dependencies and the demo `camel-stream-starter` are removed, the starter under test is added, and any extra dependencies or `application.properties` entries from the test config are applied.
+. **Compilation** -- The generated project is compiled via `mvn compile dependency:build-classpath`, which also writes the full runtime classpath to a file for the next step.
+. **Classloader isolation** -- A child `URLClassLoader` is created with the compiled classes and all resolved dependency JARs, parented by the test classloader. Only `camel-api` and `spring-context` live on the parent classloader so that assertion types (`CamelContext`, `Component`, `DataFormat`, `Language`, `CamelClusterService`) are shared.
+. **Spring Boot startup** -- `SpringApplication` is loaded from the child classloader and started via reflection. A `DefaultResourceLoader` pointing at the child classloader ensures the generated project's `application.properties` is picked up. By default, the embedded web server is disabled (`spring.main.web-application-type=none`). When `webRequired` is set to `true`, the web stack is kept and the server binds to a random port (`server.port=0`) to avoid conflicts during parallel execution.
+. **Assertions** -- Tests verify the `CamelContext` is running, components/dataformats/languages can be resolved, and no dependency version mismatches exist.
 
-Test options can be changed from the configuration of the maven-surefire-plugin in the `pom.xml` file.
+=== Class hierarchy
 
-Some useful options include:
+[source]
+----
+AbstractSpringBootBaseTestSupport        archetype generation via @RegisterExtension
+  |                                      compile + start Spring Boot + assertions
+  |                                      inferModuleName / inferStarterDependency / inferComponentName
+  |
+  ├── CamelActivemq6IT                   typical starter test (empty body)
+  ├── CamelKubernetesIT                  starter test with multiple sub-components
+  ├── CamelCxfRestIT                     starter test with custom config override
+  ├── CamelFileClusterServiceIT          cluster service test with registerClusterServices
+  └── ...                                (~370 test classes)
+----
 
-* **itest.springboot.includeTestDependencies (default=true)**: when this option is enabled,
-the integration test will locate the module `pom.xml` file and include in the spring-boot jar also the test-scoped dependencies of the module.
-  The inclusion of other libraries often activates some hidden behaviour of spring-boot.
-* **itest.springboot.unitTestEnabled (default=true)**: when this option is enabled,
-the integration test will locate the test-classes of the module and run the unit tests after the execution of the usual checks.
-  *Note: a full build of each component is required prior to running the unit tests. Test dependencies are implicitly included.*
-* **itest.springboot.failOnRelatedLibraryMismatch (default=false)**:  when this option is enabled,
-the integration test will only print a warning in case of a version conflict between SpringBoot and Camel SpringBoot Boms instead of failing.
-* **itest.springboot.debugEnabled (default=false)**:  when this option is enabled,
-the integration test will print all messages that are helpful for debugging purposes
+=== Key classes
 
-*Note: logging dependencies (eg. `log4j`) are fixed automatically, to prevent conflict with spring-boot logging system.*
\ No newline at end of file
+[cols="1,3"]
+|===
+| Class | Purpose
+
+| `ArchetypeGenerationExtension`
+| JUnit 6 extension (`BeforeAllCallback`, `ParameterResolver`) that generates an archetype project, strips it to the `@SpringBootApplication` main class, customizes the POM (adds dependencies, removes test-scoped and stream starters), appends `application.properties` entries, and manages temp directory cleanup via `delete-after-test`
+
+| `AbstractSpringBootBaseTestSupport`
+| Registers the extension and provides naming convention utilities (`inferModuleName`, `inferStarterDependency`, `inferComponentName`). Orchestrates compilation and Spring Boot startup in `@BeforeAll`, exposes `assertComponent()` / `assertDataFormat()` / `assertLanguage()` / `assertNoVersionMismatch()`, bridges `CamelClusterService` beans when `registerClusterServices` is set, tears down context and classloader in `@AfterAll`
+|===
+
+== Inherited tests
+
+Every subclass of `AbstractSpringBootBaseTestSupport` automatically inherits two `@Test` methods:
+
+* **`camelContextIsRunning`** -- Verifies the `CamelContext` bean exists and is started.
+* **`dependencyVersionMismatchTest`** -- Parses the resolved runtime classpath (Maven local repository JAR paths), groups artifacts by `groupId:artifactPrefix`, and fails if the same artifact appears with multiple versions that differ in major or minor (patch-only differences are reported as warnings). Warning reports are written to `target/failsafe-reports/<module>-version-mismatches.txt`.
+
+== Configuration
+
+Tests derive their configuration from the class name by convention:
+
+* `CamelActivemq6IT` -> starter `camel-activemq6-starter`, component name `activemq6`
+* `CamelXsltSaxonIT` -> starter `camel-xslt-saxon-starter`, component name `xslt-saxon`
+
+Most tests need no configuration at all -- an empty class body is sufficient. Tests that need extra dependencies, properties, or flags override `getArchetypeConfig()` using `baseArchetypeConfig()`:
+
+[source,java]
+----
+@Override
+protected ArchetypeConfig getArchetypeConfig() {
+    return baseArchetypeConfig()
+            .dependency("com.h2database:h2:2.3.232")
+            .property("spring.autoconfigure.exclude=...")
+            .registerClusterServices(true)
+            .build();
+}
+----
+
+=== ArchetypeConfig builder options
+
+[cols="1,3"]
+|===
+| Method | Description
+
+| `.dependency(String gav)`
+| Add a dependency to the generated POM in `groupId:artifactId[:version]` format. Version-less dependencies rely on the BOM.
+
+| `.property(String entry)`
+| Append a line to `application.properties` (e.g. `"camel.cluster.file.enabled=true"`).
+
+| `.registerClusterServices(boolean)`
+| Bridge `CamelClusterService` Spring beans into the CamelContext service registry after startup. Required for cluster service tests because the child classloader prevents the normal auto-discovery.
+
+| `.webRequired(boolean)`
+| When `false` (default), all archetype dependencies except `camel-spring-boot-starter` are removed (e.g. `spring-boot-starter-web`, `spring-boot-starter-actuator`). Set to `true` for starters that need the web stack.
+
+| `.sourceFile(String fqcn, String source)`
+| Add a Java source file to the generated project before compilation. The FQCN determines the file path (e.g. `com.example.TestConfig` writes to `src/main/java/com/example/TestConfig.java`). Useful for injecting `@Configuration` classes that provide beans required at startup.
+
+| `.artifactId(String)`
+| Override the generated project's Maven artifactId (defaults to the inferred module name).
+
+| `.mainClassName(String)`
+| Override the main class name (defaults to `MySpringBootApplication`).
+|===
+
+== Running
+
+Build the archetype first (required once):
+
+[source,bash]
+----
+mvn install -pl archetypes/camel-archetype-spring-boot -am -DskipTests
+----
+
+Run all integration tests:
+
+[source,bash]
+----
+mvn verify -pl tests/camel-itest-spring-boot
+----
+
+Run a single test:
+
+[source,bash]
+----
+mvn verify -pl tests/camel-itest-spring-boot -Dit.test=CamelActivemq6IT
+----
+
+=== Useful properties
+
+[cols="1,1,3"]
+|===
+| Property | Default | Description
+
+| `delete-after-test`
+| `true`
+| Delete generated archetype projects after tests complete. Set to `false` to inspect generated projects in `target/archetype-test-*/`.
+
+| `it.test`
+| (all)
+| Run specific test(s), e.g. `-Dit.test=CamelCoreIT,CamelFtpIT`
+|===
+
+== Parallelism
+
+Failsafe is configured with `forkCount=0.5C` and `reuseForks=false`, meaning it runs one forked JVM per two CPU cores, each test in a fresh JVM. This is required because each test creates its own child classloader with an isolated Spring Boot application.
+
+== Catalog coverage test
+
+`CamelCatalogIT` (in `org.apache.camel.itest.springboot.catalog`) uses the Camel Catalog (`DefaultCamelCatalog`) to verify that every component, data format, and language listed in the catalog has a corresponding integration test class, provided a Spring Boot starter exists for it in `components-starter/`.
+
+The test works by:
+
+. Enumerating all components, data formats, and languages via `CamelCatalog.findComponentNames()`, `findDataFormatNames()`, and `findLanguageNames()`.
+. For each entry, resolving the Maven `artifactId` from the catalog model (e.g. `camel-activemq`).
+. Checking whether a starter directory `\{artifactId}-starter` exists under `components-starter/`. Entries without a starter are skipped.
+. Converting the `artifactId` to the expected test class name (e.g. `camel-aws2-s3` to `CamelAws2S3IT`) and verifying the class exists on the classpath.
+
+Run the catalog coverage test alone:
+
+[source,bash]
+----
+mvn verify -pl tests/camel-itest-spring-boot -Dit.test=CamelCatalogIT
+----
+
+When adding a new starter, `CamelCatalogIT` will fail until the corresponding test class is created.
+
+== Adding a new starter test
+
+Generate a skeleton test class using the `generate` profile:
+
+[source,bash]
+----
+mvn -Pgenerate -Dstarter=my-component -pl tests/camel-itest-spring-boot
+----
+
+This creates `CamelMyComponentIT.java` with a `componentTest()` that asserts the component name inferred from the class name. For example:
+
+* `-Dstarter=activemq6` -> `CamelActivemq6IT.java`
+* `-Dstarter=xslt-saxon` -> `CamelXsltSaxonIT.java`
+* `-Dstarter=aws2-s3` -> `CamelAws2S3IT.java`
+
+The inherited tests (`camelContextIsRunning`, `dependencyVersionMismatchTest`) and the generated `componentTest()` run automatically. Add dataformat/language assertions as needed:
+
+[source,java]
+----
+@Test
+void componentTest() {
+    assertComponent("my-component");
+}
+
+@Test
+void dataformatTest() {
+    assertDataFormat("my-dataformat");
+}
+----
+
+If the starter requires a Spring bean that isn't auto-configured, use `.sourceFile()` to inject a `@Configuration` class into the generated project:
+
+[source,java]
+----
+@Override
+protected ArchetypeConfig getArchetypeConfig() {
+    return baseArchetypeConfig()
+            .dependency("io.opentelemetry:opentelemetry-api")
+            .sourceFile("com.example.OpenTelemetryConfig", """
+                    package com.example;
+
+                    import io.opentelemetry.api.OpenTelemetry;
+                    import io.opentelemetry.api.metrics.Meter;
+                    import org.springframework.context.annotation.Bean;
+                    import org.springframework.context.annotation.Configuration;
+
+                    @Configuration
+                    public class OpenTelemetryConfig {
+                        @Bean
+                        public Meter meter() {
+                            return OpenTelemetry.noop().getMeter("camel");
+                        }
+                    }
+                    """)
+            .build();
+}
+----
+
+If the starter has sub-components, list them explicitly:
+
+[source,java]
+----
+@Test
+void componentTest() {
+    assertComponent("kubernetes-pods");
+    assertComponent("kubernetes-services");
+    assertComponent("kubernetes-namespaces");
+}
+----
diff --git a/tests/camel-itest-spring-boot/pom.xml b/tests/camel-itest-spring-boot/pom.xml
index 535d29466cf..9d787da438d 100644
--- a/tests/camel-itest-spring-boot/pom.xml
+++ b/tests/camel-itest-spring-boot/pom.xml
@@ -30,16 +30,22 @@
 
     <artifactId>camel-itest-spring-boot</artifactId>
     <name>Camel SB :: Integration Tests</name>
-    <description>Spring-Boot Camel test</description>
+    <description>Spring-Boot Camel integration test</description>
 
     <properties>
-        <shrinkwrap-version>1.2.6</shrinkwrap-version>
-        <shrinkwrap-resolver-version>3.1.4</shrinkwrap-resolver-version>
-        <shrinkwrap-plexus-version>3.2.1</shrinkwrap-plexus-version>
+        <archetype-common-version>3.4.1</archetype-common-version>
+        <delete-after-test>true</delete-after-test>
     </properties>
 
     <dependencyManagement>
         <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot-version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <dependency>
                 <groupId>org.junit</groupId>
                 <artifactId>junit-bom</artifactId>
@@ -51,200 +57,85 @@
     </dependencyManagement>
 
     <dependencies>
-
-        <dependency>
-            <groupId>org.apache.camel.springboot</groupId>
-            <artifactId>camel-spring-boot-starter</artifactId>
-        </dependency>
-
-        <!-- Dependency needed to incorporate classes in main jar -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-loader</artifactId>
-            <version>${spring-boot-version}</version>
-        </dependency>
-
-        <!-- Test dependencies needed also at compile/unitTestEnabled time -->
-        <dependency>
-            <groupId>org.jboss.shrinkwrap</groupId>
-            <artifactId>shrinkwrap-api</artifactId>
-            <version>${shrinkwrap-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.jboss.shrinkwrap</groupId>
-            <artifactId>shrinkwrap-impl-base</artifactId>
-            <version>${shrinkwrap-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.plexus</groupId>
-            <artifactId>plexus-utils</artifactId>
-            <version>${shrinkwrap-plexus-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit6-jupiter-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.platform</groupId>
-            <artifactId>junit-platform-launcher</artifactId>
-            <version>${junit6-jupiter-version}</version>
-        </dependency>
-      
-        <!-- Test dependencies -->
-        <dependency>
-            <groupId>org.eclipse.aether</groupId>
-            <artifactId>aether-impl</artifactId>
-            <version>${aether-version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.aether</groupId>
-            <artifactId>aether-transport-file</artifactId>
-            <version>${aether-version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
-            <groupId>org.eclipse.aether</groupId>
-            <artifactId>aether-transport-http</artifactId>
-            <version>${aether-version}</version>
-            <scope>test</scope>
+            <groupId>org.apache.maven.archetype</groupId>
+            <artifactId>archetype-common</artifactId>
+            <version>${archetype-common-version}</version>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.aether</groupId>
-            <artifactId>aether-connector-basic</artifactId>
-            <version>${aether-version}</version>
-            <scope>test</scope>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>${maven-version}</version>
         </dependency>
-
-        <dependency>
-            <groupId>org.jboss.arquillian.junit5</groupId>
-            <artifactId>arquillian-junit5-container</artifactId>
-            <version>${arquillian-version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.jboss.arquillian.container</groupId>
-            <artifactId>arquillian-container-test-spi</artifactId>
-            <version>${arquillian-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jboss.arquillian.protocol</groupId>
-            <artifactId>arquillian-protocol-jmx</artifactId>
-            <version>${arquillian-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jboss.arquillian.container</groupId>
-            <artifactId>container-se-api</artifactId>
-            <version>${arquillian-container-se-managed-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jboss.arquillian.container</groupId>
-            <artifactId>container-se-server</artifactId>
-            <version>${arquillian-container-se-managed-version}</version>
-        </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-api</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.maven.resolver</groupId>
-                    <artifactId>maven-resolver-connector-basic</artifactId>
-                </exclusion>
-            </exclusions>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-api</artifactId>
+            <version>${camel-version}</version>
         </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-spi</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-catalog</artifactId>
+            <version>${camel-version}</version>
         </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-api-maven</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-spi-maven</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-api-maven-archive</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>org.jboss.shrinkwrap.resolver</groupId>
-            <artifactId>shrinkwrap-resolver-impl-maven-archive</artifactId>
-            <version>${shrinkwrap-resolver-version}</version>
-            <scope>test</scope>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
         </dependency>
-
+        <!-- to make sure the dependency jar is in local maven repository -->
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-actuator</artifactId>
-            <version>${spring-boot-version}</version>
-            <scope>test</scope>
+            <groupId>org.apache.camel.archetypes</groupId>
+            <artifactId>camel-archetype-spring-boot</artifactId>
+            <version>${project.version}</version>
         </dependency>
-
     </dependencies>
 
     <build>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <childDelegation>false</childDelegation>
-                    <forkedProcessTimeoutInSeconds>15000</forkedProcessTimeoutInSeconds>
-                    <rerunFailingTestsCount>1</rerunFailingTestsCount>
-                    <includes>
-                        <include>**/*Test.java</include>
-                    </includes>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>${maven-surefire-plugin-version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <forkCount>0.5C</forkCount>
+                    <reuseForks>false</reuseForks>
                     <systemPropertyVariables>
-                        <!-- Test configuration -->
-                        <!--
-                        It is better disabling unit testing in surefire, as some of them fail for various reasons
-                        (unrelated to spring-boot) when running in the arquillian jar.
-
-                        Tests are enabled when running from IDE. See org.apache.camel.itest.springboot.ITestConfigBuilder
-                        for property names and defaults values.
-                        -->
-                        <itest.springboot.unitTestEnabled>true</itest.springboot.unitTestEnabled>
-                        <itest.springboot.includeTestDependencies>true</itest.springboot.includeTestDependencies>
-                        <itest.springboot.mavenOfflineResolution>false</itest.springboot.mavenOfflineResolution>
-                        <itest.springboot.springBootVersion>${spring-boot-version}</itest.springboot.springBootVersion>
-                        <!-- To remove once all version conflicts are fixed -->
-                        <itest.springboot.failOnRelatedLibraryMismatch>false</itest.springboot.failOnRelatedLibraryMismatch>
-
-                        <!-- Version properties to look up in tests -->
-                        <itest.infinispan.version>${infinispan-version}</itest.infinispan.version>
-                        <itest.infinispan-protostream.version>${infinispan-protostream-version}</itest.infinispan-protostream.version>
-
-                        <!-- Force JDK XML parsers to avoid Oracle XML parser conflicts -->
-                        <javax.xml.parsers.SAXParserFactory>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</javax.xml.parsers.SAXParserFactory>
-                        <javax.xml.parsers.DocumentBuilderFactory>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</javax.xml.parsers.DocumentBuilderFactory>
+                        <camel-version>${camel-version}</camel-version>
+                        <spring-boot-version>${spring-boot-version}</spring-boot-version>
+                        <maven-compiler-plugin-version>${maven-compiler-plugin-version}</maven-compiler-plugin-version>
+                        <project-version>${project.version}</project-version>
+                        <project.build.directory>${project.build.directory}</project.build.directory>
+                        <delete-after-test>${delete-after-test}</delete-after-test>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>
@@ -253,19 +144,27 @@
 
     <profiles>
         <profile>
-            <id>skip-itest-github</id>
-            <activation>
-                <property>
-                    <name>ci.env.name</name>
-                    <value>github.com</value>
-                </property>
-            </activation>
+            <id>generate</id>
+            <properties>
+                <starter>REQUIRED</starter>
+            </properties>
             <build>
+                <defaultGoal>compile exec:java</defaultGoal>
                 <plugins>
                     <plugin>
-                        <artifactId>maven-surefire-plugin</artifactId>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>exec-maven-plugin</artifactId>
                         <configuration>
-                            <skipTests>true</skipTests>
+                            <mainClass>org.apache.camel.itest.springboot.util.CreateTestClass</mainClass>
+                            <arguments>
+                                <argument>camel-${starter}-starter</argument>
+                            </arguments>
+                            <systemProperties>
+                                <systemProperty>
+                                    <key>project.basedir</key>
+                                    <value>${project.basedir}</value>
+                                </systemProperty>
+                            </systemProperties>
                         </configuration>
                     </plugin>
                 </plugins>
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ApplicationContextHolder.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ApplicationContextHolder.java
deleted file mode 100644
index 66135da078b..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ApplicationContextHolder.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * receives a spring-context and make it available to classes outside the spring scope.
- */
-@Component
-public class ApplicationContextHolder implements ApplicationContextAware {
-
-    private static final CountDownLatch contextLatch = new CountDownLatch(1);
-    private static ApplicationContext context;
-
-    private static long contextMaxWaitTime = 60000L;
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        ApplicationContextHolder.context = applicationContext;
-        contextLatch.countDown();
-    }
-
-    public static ApplicationContext getApplicationContext() throws InterruptedException {
-        waitForContextReady();
-        return context;
-    }
-
-    private static void waitForContextReady() throws InterruptedException {
-        long maxWait = contextMaxWaitTime;
-        contextLatch.await(maxWait, TimeUnit.MILLISECONDS);
-    }
-
-    public static long getContextMaxWaitTime() {
-        return contextMaxWaitTime;
-    }
-
-    public static void setContextMaxWaitTime(long contextMaxWaitTime) {
-        ApplicationContextHolder.contextMaxWaitTime = contextMaxWaitTime;
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/CommandRouter.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/CommandRouter.java
deleted file mode 100644
index 7610ab795bb..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/CommandRouter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import java.util.concurrent.Future;
-
-import org.springframework.context.ApplicationContext;
-
-import static org.apache.camel.itest.springboot.util.SerializationUtils.marshal;
-import static org.apache.camel.itest.springboot.util.SerializationUtils.transferable;
-import static org.apache.camel.itest.springboot.util.SerializationUtils.unmarshal;
-
-/**
- * Routes a command coming from another classloader to the appropriate spring bean.
- */
-public final class CommandRouter {
-
-    private CommandRouter() {
-    }
-
-    public static byte[] execute(String commandStr, byte[] params) {
-
-        try {
-            ApplicationContext context = ApplicationContextHolder.getApplicationContext();
-
-            Command command = (Command) context.getBean(commandStr);
-
-            Object[] args = null;
-            if (params != null) {
-                args = (Object[]) unmarshal(params);
-            }
-
-            Future<Object> futResult = command.execute(args);
-            Object result = futResult.get();
-
-            return marshal(result);
-        } catch (Throwable t) {
-            return marshal(transferable(t));
-        }
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestApplication.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestApplication.java
deleted file mode 100644
index 66b11840400..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestApplication.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.Banner.Mode;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.WebApplicationType;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Import;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-/**
- * Contains the main class of the sample spring-boot application created for the module under test.
- *
- */
-// Don't load the datasource bean here because the properties are only defined in the unit test class (CamelSqlTest)
-@SpringBootApplication(excludeName = { "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration" })
-@EnableAsync
-@Import(ITestXmlConfiguration.class)
-public class ITestApplication {
-
-    public static void main(String[] args) throws Exception {
-
-        try {
-            SpringApplication app = new SpringApplication(ITestApplication.class);
-            // Prevent writing to stdout
-            app.setBannerMode(Mode.OFF);
-            // Prevent starting webserver; it will be started in unit tests if required
-            app.setWebApplicationType(WebApplicationType.NONE);
-            app.run(args);
-        } catch (Throwable t) {
-            LoggerFactory.getLogger(ITestApplication.class).error("Error while executing test", t);
-            throw t;
-        }
-    }
-
-    @Override
-    public String toString() {
-        // to tell source-check this is not a utility-class
-        return "spring-boot-main";
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestConfig.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestConfig.java
deleted file mode 100644
index 3240ee371fd..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestConfig.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A configuration bean for a test execution.
- */
-public class ITestConfig implements Serializable {
-
-    private static final int DEFAULT_SPRING_BOOT_MAJOR_VERSION = 3;
-
-    private static final long serialVersionUID = -3641997669166217595L;
-
-    private String moduleName;
-
-    private String mavenGroup;
-
-    private String mavenVersion;
-
-    private Boolean mavenOfflineResolution;
-
-    private String modulesPath;
-
-    private String moduleBasePath;
-
-    private Boolean includeTestDependencies;
-
-    private Boolean includeProvidedDependencies;
-
-    private Boolean unitTestEnabled;
-
-    private String unitTestInclusionPattern;
-
-    private String unitTestExclusionPattern;
-
-    private String unitTestBasePackage;
-
-    private Integer unitTestsExpectedNumber;
-
-    private Map<String, String> resources;
-
-    private Set<String> additionalDependencies;
-
-    private Set<String> mavenExclusions;
-
-    private Boolean autoStartComponent;
-
-    private Set<String> jmxDisabledNames;
-
-    private Map<String, String> systemProperties;
-
-    private Boolean useCustomLog;
-
-    private Set<String> ignoreLibraryMismatch;
-
-    private Map<String, String> testLibraryVersions;
-
-    private String springBootVersion;
-
-    /**
-     * A flag to enable system-out logging. Cannot use logging libraries here.
-     */
-    private Boolean debugEnabled;
-
-    /**
-     * Configuration of the library checker.
-     */
-    private Boolean failOnRelatedLibraryMismatch;
-
-    public ITestConfig() {
-    }
-
-    public String getModuleName() {
-        return moduleName;
-    }
-
-    public void setModuleName(String moduleName) {
-        this.moduleName = moduleName;
-    }
-
-    public String getMavenGroup() {
-        return mavenGroup;
-    }
-
-    public void setMavenGroup(String mavenGroup) {
-        this.mavenGroup = mavenGroup;
-    }
-
-    public String getMavenVersion() {
-        return mavenVersion;
-    }
-
-    public void setMavenVersion(String mavenVersion) {
-        this.mavenVersion = mavenVersion;
-    }
-
-    public Boolean getMavenOfflineResolution() {
-        return mavenOfflineResolution;
-    }
-
-    public void setMavenOfflineResolution(Boolean mavenOfflineResolution) {
-        this.mavenOfflineResolution = mavenOfflineResolution;
-    }
-
-    public String getModulesPath() {
-        return modulesPath;
-    }
-
-    public void setModulesPath(String modulesPath) {
-        this.modulesPath = modulesPath;
-    }
-
-    public String getModuleBasePath() {
-        return moduleBasePath;
-    }
-
-    public void setModuleBasePath(String moduleBasePath) {
-        this.moduleBasePath = moduleBasePath;
-    }
-
-    public Boolean getIncludeTestDependencies() {
-        return includeTestDependencies;
-    }
-
-    public void setIncludeTestDependencies(Boolean includeTestDependencies) {
-        this.includeTestDependencies = includeTestDependencies;
-    }
-
-    public Boolean getIncludeProvidedDependencies() {
-        return includeProvidedDependencies;
-    }
-
-    public void setIncludeProvidedDependencies(Boolean includeProvidedDependencies) {
-        this.includeProvidedDependencies = includeProvidedDependencies;
-    }
-
-    public Boolean getUnitTestEnabled() {
-        return unitTestEnabled;
-    }
-
-    public void setUnitTestEnabled(Boolean unitTestEnabled) {
-        this.unitTestEnabled = unitTestEnabled;
-    }
-
-    public String getUnitTestInclusionPattern() {
-        return unitTestInclusionPattern;
-    }
-
-    public void setUnitTestInclusionPattern(String unitTestInclusionPattern) {
-        this.unitTestInclusionPattern = unitTestInclusionPattern;
-    }
-
-    public String getUnitTestExclusionPattern() {
-        return unitTestExclusionPattern;
-    }
-
-    public void setUnitTestExclusionPattern(String unitTestExclusionPattern) {
-        this.unitTestExclusionPattern = unitTestExclusionPattern;
-    }
-
-    public String getUnitTestBasePackage() {
-        return unitTestBasePackage;
-    }
-
-    public void setUnitTestBasePackage(String unitTestBasePackage) {
-        this.unitTestBasePackage = unitTestBasePackage;
-    }
-
-    public Integer getUnitTestsExpectedNumber() {
-        return unitTestsExpectedNumber;
-    }
-
-    public void setUnitTestsExpectedNumber(Integer unitTestsExpectedNumber) {
-        this.unitTestsExpectedNumber = unitTestsExpectedNumber;
-    }
-
-    public Map<String, String> getResources() {
-        return resources;
-    }
-
-    public Set<String> getAdditionalDependencies() {
-        return additionalDependencies;
-    }
-
-    public void setAdditionalDependencies(Set<String> additionalDependencies) {
-        this.additionalDependencies = additionalDependencies;
-    }
-
-    public Set<String> getMavenExclusions() {
-        return mavenExclusions;
-    }
-
-    public void setMavenExclusions(Set<String> mavenExclusions) {
-        this.mavenExclusions = mavenExclusions;
-    }
-
-    public void setResources(Map<String, String> resources) {
-        this.resources = resources;
-    }
-
-    public Boolean getAutoStartComponent() {
-        return autoStartComponent;
-    }
-
-    public void setAutoStartComponent(Boolean autoStartComponent) {
-        this.autoStartComponent = autoStartComponent;
-    }
-
-    public Set<String> getJmxDisabledNames() {
-        return jmxDisabledNames;
-    }
-
-    public void setJmxDisabledNames(Set<String> jmxDisabledNames) {
-        this.jmxDisabledNames = jmxDisabledNames;
-    }
-
-    public Map<String, String> getSystemProperties() {
-        return systemProperties;
-    }
-
-    public void setSystemProperties(Map<String, String> systemProperties) {
-        this.systemProperties = systemProperties;
-    }
-
-    public Boolean getUseCustomLog() {
-        return useCustomLog;
-    }
-
-    public void setUseCustomLog(Boolean useCustomLog) {
-        this.useCustomLog = useCustomLog;
-    }
-
-    public Set<String> getIgnoreLibraryMismatch() {
-        return ignoreLibraryMismatch;
-    }
-
-    public void setIgnoreLibraryMismatch(Set<String> ignoreLibraryMismatch) {
-        this.ignoreLibraryMismatch = ignoreLibraryMismatch;
-    }
-
-    public Map<String, String> getTestLibraryVersions() {
-        return testLibraryVersions;
-    }
-
-    public void setTestLibraryVersions(Map<String, String> testLibraryVersions) {
-        this.testLibraryVersions = testLibraryVersions;
-    }
-
-    public String getSpringBootVersion() {
-        return springBootVersion;
-    }
-
-    public Integer getSpringBootMajorVersion() {
-        if (springBootVersion != null) {
-            return Integer.parseInt(springBootVersion.substring(0, 1));
-        } else {
-            return DEFAULT_SPRING_BOOT_MAJOR_VERSION;
-        }
-    }
-
-    public void setSpringBootVersion(String springBootVersion) {
-        this.springBootVersion = springBootVersion;
-    }
-
-    public Boolean getDebugEnabled() {
-        return debugEnabled;
-    }
-
-    public void setDebugEnabled(Boolean debugEnabled) {
-        this.debugEnabled = debugEnabled;
-    }
-
-    public Boolean getFailOnRelatedLibraryMismatch() {
-        return failOnRelatedLibraryMismatch;
-    }
-
-    public void setFailOnRelatedLibraryMismatch(Boolean failOnRelatedLibraryMismatch) {
-        this.failOnRelatedLibraryMismatch = failOnRelatedLibraryMismatch;
-    }
-
-    @Override
-    public String toString() {
-        return "ITestConfig{" + "moduleName='" + moduleName + '\'' + ", mavenGroup='" + mavenGroup + '\''
-                + ", mavenVersion='" + mavenVersion + '\'' + ", mavenOfflineResolution=" + mavenOfflineResolution
-                + ", modulesPath='" + modulesPath + '\'' + ", moduleBasePath='" + moduleBasePath + '\''
-                + ", includeTestDependencies=" + includeTestDependencies + ", includeProvidedDependencies="
-                + includeProvidedDependencies + ", unitTestEnabled=" + unitTestEnabled + ", unitTestInclusionPattern='"
-                + unitTestInclusionPattern + '\'' + ", unitTestExclusionPattern='" + unitTestExclusionPattern + '\''
-                + ", unitTestBasePackage='" + unitTestBasePackage + '\'' + ", unitTestsExpectedNumber="
-                + unitTestsExpectedNumber + ", resources=" + resources + ", additionalDependencies="
-                + additionalDependencies + ", mavenExclusions=" + mavenExclusions + ", autoStartComponent="
-                + autoStartComponent + ", jmxDisabledNames=" + jmxDisabledNames + ", systemProperties="
-                + systemProperties + ", useCustomLog=" + useCustomLog + ", ignoreLibraryMismatch="
-                + ignoreLibraryMismatch + ", testLibraryVersions=" + testLibraryVersions + ", springBootVersion="
-                + springBootVersion + ", debugEnabled=" + debugEnabled + ", failOnRelatedLibraryMismatch="
-                + failOnRelatedLibraryMismatch + '}';
-    }
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestConfigBuilder.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestConfigBuilder.java
deleted file mode 100644
index e37406df348..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestConfigBuilder.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.TreeSet;
-
-/**
- * Builder for the {@code ITestConfig} that enforces defaults values.
- */
-public class ITestConfigBuilder {
-
-    public static final String CONFIG_PREFIX = "itest.springboot.";
-
-    private final ITestConfig config;
-
-    public ITestConfigBuilder() {
-        this.config = new ITestConfig();
-    }
-
-    public ITestConfigBuilder(ITestConfig config) {
-        this.config = config;
-    }
-
-    public ITestConfigBuilder module(String module) {
-        config.setModuleName(module);
-        return this;
-    }
-
-    public ITestConfigBuilder mavenGroup(String mavenGroup) {
-        config.setMavenGroup(mavenGroup);
-        return this;
-    }
-
-    public ITestConfigBuilder mavenVersion(String mavenVersion) {
-        config.setMavenVersion(mavenVersion);
-        return this;
-    }
-
-    public ITestConfigBuilder modulesPath(String path) {
-        config.setModulesPath(path);
-        return this;
-    }
-
-    public ITestConfigBuilder basePath(String basePath) {
-        config.setModuleBasePath(basePath);
-        return this;
-    }
-
-    public ITestConfigBuilder unitTestExpectedNumber(int number) {
-        config.setUnitTestsExpectedNumber(number);
-        return this;
-    }
-
-    public ITestConfigBuilder unitTestBasePackage(String pack) {
-        config.setUnitTestBasePackage(pack);
-        return this;
-    }
-
-    public ITestConfigBuilder unitTestInclusionPattern(String pattern) {
-        config.setUnitTestInclusionPattern(pattern);
-        return this;
-    }
-
-    public ITestConfigBuilder unitTestExclusionPattern(String pattern) {
-        config.setUnitTestExclusionPattern(pattern);
-        return this;
-    }
-
-    public ITestConfigBuilder autostart(Boolean autostart) {
-        config.setAutoStartComponent(autostart);
-        return this;
-    }
-
-    public ITestConfigBuilder resource(String file, String dest) {
-        if (config.getResources() == null) {
-            config.setResources(new HashMap<>());
-        }
-        config.getResources().put(file, dest);
-        return this;
-    }
-
-    public ITestConfigBuilder dependency(String dependencyCanonicalForm) {
-        if (config.getAdditionalDependencies() == null) {
-            config.setAdditionalDependencies(new HashSet<>());
-        }
-        config.getAdditionalDependencies().add(dependencyCanonicalForm);
-        return this;
-    }
-
-    public ITestConfigBuilder exclusion(String exclusionCanonicalForm) {
-        if (exclusionCanonicalForm.split(":").length != 2) {
-            throw new IllegalArgumentException(
-                    "Expected exclusion in the form groupId:artifactId, got: " + exclusionCanonicalForm);
-        }
-        if (config.getMavenExclusions() == null) {
-            config.setMavenExclusions(new HashSet<String>());
-        }
-        config.getMavenExclusions().add(exclusionCanonicalForm);
-        return this;
-    }
-
-    public ITestConfigBuilder resource(String file) {
-        return resource(file, file);
-    }
-
-    public ITestConfigBuilder disableJmx(String name) {
-        if (config.getJmxDisabledNames() == null) {
-            config.setJmxDisabledNames(new TreeSet<String>());
-        }
-        config.getJmxDisabledNames().add(name);
-        return this;
-    }
-
-    public ITestConfigBuilder systemProperty(String name, String value) {
-        if (config.getSystemProperties() == null) {
-            config.setSystemProperties(new HashMap<String, String>());
-        }
-        config.getSystemProperties().put(name, value);
-        return this;
-    }
-
-    public ITestConfigBuilder customLog(Boolean value) {
-        config.setUseCustomLog(value);
-        return this;
-    }
-
-    public ITestConfigBuilder ignoreLibraryMismatch(String libraryPrefix) {
-        if (config.getIgnoreLibraryMismatch() == null) {
-            config.setIgnoreLibraryMismatch(new HashSet<>());
-        }
-        config.getIgnoreLibraryMismatch().add(libraryPrefix);
-        return this;
-    }
-
-    public ITestConfigBuilder testLibraryVersion(String groupIdArtifactId, String version) {
-        if (config.getTestLibraryVersions() == null) {
-            config.setTestLibraryVersions(new HashMap<>());
-        }
-        config.getTestLibraryVersions().put(groupIdArtifactId, version);
-        return this;
-    }
-
-    public ITestConfigBuilder includeTestDependencies(Boolean includeTestDependencies) {
-        config.setIncludeTestDependencies(includeTestDependencies);
-        return this;
-    }
-
-    public ITestConfigBuilder unitTestsEnabled(Boolean unitTestsEnabled) {
-        config.setUnitTestEnabled(unitTestsEnabled);
-        return this;
-    }
-
-    public ITestConfigBuilder springBootVersion(String springBootVersion) {
-        config.setSpringBootVersion(springBootVersion);
-        return this;
-    }
-
-    public ITestConfigBuilder mavenOfflineResolution(Boolean offlineResolution) {
-        config.setMavenOfflineResolution(offlineResolution);
-        return this;
-    }
-
-    public ITestConfigBuilder debugEnabled(Boolean debugEnabled) {
-        config.setDebugEnabled(debugEnabled);
-        return this;
-    }
-
-    public ITestConfigBuilder failOnRelatedLibraryMismatch(Boolean failOnRelatedLibraryMismatch) {
-        config.setFailOnRelatedLibraryMismatch(failOnRelatedLibraryMismatch);
-        return this;
-    }
-
-    public ITestConfig build() {
-
-        // Checking conditions
-        if (config.getModuleName() == null) {
-            fail("ModuleName is required");
-        }
-
-        // Set the defaults
-        if (config.getUnitTestEnabled() == null) {
-            config.setUnitTestEnabled(booleanPropertyOr("unitTestEnabled", true));
-        }
-
-        if (config.getMavenGroup() == null) {
-            config.setMavenGroup(propertyOr("mavenGroup", "org.apache.camel"));
-        }
-
-        if (config.getMavenVersion() == null) {
-            config.setMavenVersion(propertyOr("mavenVersion", null));
-        }
-
-        if (config.getMavenOfflineResolution() == null) {
-            config.setMavenOfflineResolution(booleanPropertyOr("mavenOfflineResolution", false));
-        }
-
-        if (config.getUnitTestInclusionPattern() == null) {
-            config.setUnitTestInclusionPattern(propertyOr("unitTestInclusionPattern", "^.*Test$")); // All tests
-        }
-
-        if (config.getUnitTestExclusionPattern() == null) {
-            config.setUnitTestExclusionPattern(
-                    propertyOr("unitTestExclusionPattern", ".*(\\.integration\\..*|IntegrationTest$)")); // Integration
-                                                                                                         // test
-        }
-
-        if (config.getIncludeTestDependencies() == null) {
-            config.setIncludeTestDependencies(
-                    booleanPropertyOr("includeTestDependencies", config.getUnitTestEnabled()));
-        }
-
-        if (config.getIncludeProvidedDependencies() == null) {
-            config.setIncludeProvidedDependencies(booleanPropertyOr("includeProvidedDependencies", false));
-        }
-
-        if (config.getModulesPath() == null) {
-            config.setModulesPath(propertyOr("modulesPath", "../../components-starter/"));
-        }
-
-        if (config.getModuleBasePath() == null) {
-            config.setModuleBasePath(config.getModulesPath() + config.getModuleName() + "-starter");
-        }
-
-        if (config.getUnitTestBasePackage() == null) {
-            config.setUnitTestBasePackage(propertyOr("unitTestBasePackage", "org.apache.camel"));
-        }
-
-        if (config.getAutoStartComponent() == null) {
-            config.setAutoStartComponent(booleanPropertyOr("autostartComponent", true));
-        }
-
-        if (config.getResources() == null) {
-            config.setResources(new HashMap<>());
-        }
-
-        if (config.getAdditionalDependencies() == null) {
-            config.setAdditionalDependencies(new HashSet<>());
-        }
-
-        if (config.getMavenExclusions() == null) {
-            config.setMavenExclusions(new HashSet<>());
-        }
-
-        if (config.getJmxDisabledNames() == null) {
-            config.setJmxDisabledNames(new HashSet<>());
-        }
-
-        if (config.getSystemProperties() == null) {
-            config.setSystemProperties(new HashMap<>());
-        }
-
-        if (config.getUseCustomLog() == null) {
-            config.setUseCustomLog(booleanPropertyOr("useCustomLog", true));
-        }
-
-        if (config.getIgnoreLibraryMismatch() == null) {
-            config.setIgnoreLibraryMismatch(new HashSet<>());
-        }
-
-        if (config.getTestLibraryVersions() == null) {
-            config.setTestLibraryVersions(new HashMap<>());
-        }
-
-        if (config.getSpringBootVersion() == null) {
-            config.setSpringBootVersion(propertyOr("springBootVersion", null));
-        }
-
-        if (config.getDebugEnabled() == null) {
-            config.setDebugEnabled(booleanPropertyOr("debugEnabled", false));
-        }
-
-        if (config.getFailOnRelatedLibraryMismatch() == null) {
-            config.setFailOnRelatedLibraryMismatch(booleanPropertyOr("failOnRelatedLibraryMismatch", true));
-        }
-        return config;
-    }
-
-    private void fail(String msg) {
-        throw new IllegalStateException("Configuration is not complete: " + msg);
-    }
-
-    private String propertyOr(String name, String defaultVal) {
-        String res = System.getProperty(CONFIG_PREFIX + name);
-        if (res == null) {
-            res = defaultVal;
-        }
-        return res;
-    }
-
-    private Boolean booleanPropertyOr(String name, Boolean defaultVal) {
-        String prop = propertyOr(name, null);
-        Boolean res = defaultVal;
-        if (prop != null) {
-            res = Boolean.valueOf(prop);
-        }
-
-        return res;
-    }
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/AbstractTestCommand.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/AbstractTestCommand.java
deleted file mode 100644
index e853422cfe0..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/AbstractTestCommand.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.command;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Future;
-
-import org.apache.camel.itest.springboot.Command;
-import org.apache.camel.itest.springboot.ITestConfig;
-import org.junit.jupiter.api.Assertions;
-import org.springframework.scheduling.annotation.Async;
-
-/**
- * An abstract class for commands that need standard test parameters.
- */
-public abstract class AbstractTestCommand implements Command {
-
-    @Async // needs to run on a spring background thread
-    @Override
-    public Future<Object> execute(Object[] parameters) throws Exception {
-        Assertions.assertNotNull(parameters, "Parameters cannot be null");
-        Assertions.assertEquals(2, parameters.length, "Parameters should contain two elements");
-        Object configObj = parameters[0];
-        Assertions.assertNotNull(configObj, "The first parameter cannot be null");
-        Assertions.assertTrue(configObj instanceof ITestConfig,
-                "First parameter should be of type ITestConfig, found type " + configObj.getClass().getName());
-
-        Object compNameObj = parameters[1];
-        Assertions.assertNotNull(compNameObj, "The second parameter cannot be null");
-        Assertions.assertTrue(compNameObj instanceof String,
-                "Second parameter should be of type String, found type " + compNameObj.getClass().getName());
-
-        String compName = (String) compNameObj;
-
-        ITestConfig config = (ITestConfig) configObj;
-        Object result = this.executeTest(config, compName);
-
-        return CompletableFuture.completedFuture(result);
-    }
-
-    public abstract Object executeTest(ITestConfig config, String component) throws Exception;
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/ComponentTestCommand.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/ComponentTestCommand.java
deleted file mode 100644
index 890bc6e52a5..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/ComponentTestCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.command;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.itest.springboot.Command;
-import org.apache.camel.itest.springboot.ITestConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-/**
- * A command that tries to lookup a camel component.
- */
-@Component("module")
-public class ComponentTestCommand extends AbstractTestCommand implements Command {
-
-    private Logger logger = LoggerFactory.getLogger(getClass());
-
-    @Autowired
-    private CamelContext context;
-
-    @Override
-    public Boolean executeTest(ITestConfig config, String component) throws Exception {
-
-        logger.info("Getting Camel component: {}", component);
-
-        org.apache.camel.Component comp = context.getComponent(component, true, config.getAutoStartComponent());
-
-        assertNotNull(comp, "Cannot get module with name: " + component);
-
-        logger.info("Found Camel module: {} instance: {} with className: {}", component, comp, comp.getClass());
-        return true;
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/DataFormatTestCommand.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/DataFormatTestCommand.java
deleted file mode 100644
index 09876cae9f0..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/DataFormatTestCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.command;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.itest.springboot.Command;
-import org.apache.camel.itest.springboot.ITestConfig;
-import org.apache.camel.spi.DataFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-/**
- * A command that tries to lookup a camel data-format.
- */
-@Component("dataformat")
-public class DataFormatTestCommand extends AbstractTestCommand implements Command {
-
-    private Logger logger = LoggerFactory.getLogger(getClass());
-
-    @Autowired
-    private CamelContext context;
-
-    @Override
-    public Boolean executeTest(ITestConfig config, String dataFormat) throws Exception {
-
-        logger.info("Getting Camel dataFormat: {}", dataFormat);
-
-        DataFormat df = context.resolveDataFormat(dataFormat);
-        assertNotNull(df, "Cannot get dataformat with name: " + dataFormat);
-
-        logger.info("Found Camel dataformat: {} instance: {} with className: {}", dataFormat, df, df.getClass());
-        return true;
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/LanguageTestCommand.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/LanguageTestCommand.java
deleted file mode 100644
index ae99e06ab37..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/LanguageTestCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.command;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.itest.springboot.Command;
-import org.apache.camel.itest.springboot.ITestConfig;
-import org.apache.camel.spi.Language;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-/**
- * A command that tries to lookup a camel language.
- */
-@Component("language")
-public class LanguageTestCommand extends AbstractTestCommand implements Command {
-
-    private Logger logger = LoggerFactory.getLogger(getClass());
-
-    @Autowired
-    private CamelContext context;
-
-    @Override
-    public Boolean executeTest(ITestConfig config, String language) throws Exception {
-
-        logger.info("Getting Camel language: {}", language);
-
-        Language lan = context.resolveLanguage(language);
-        assertNotNull(lan, "Cannot get language with name: " + language);
-
-        logger.info("Found Camel language: {} instance: {} with className: {}", language, lan, lan.getClass());
-        return true;
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/UnitTestCommand.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/UnitTestCommand.java
deleted file mode 100644
index fd470dc765d..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/UnitTestCommand.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.command;
-
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.ObjectName;
-
-import org.apache.camel.itest.springboot.Command;
-import org.apache.camel.itest.springboot.ITestConfig;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.platform.engine.FilterResult;
-import org.junit.platform.engine.TestDescriptor;
-import org.junit.platform.engine.TestSource;
-import org.junit.platform.engine.support.descriptor.ClassSource;
-import org.junit.platform.engine.support.descriptor.MethodSource;
-import org.junit.platform.launcher.Launcher;
-import org.junit.platform.launcher.LauncherDiscoveryRequest;
-import org.junit.platform.launcher.PostDiscoveryFilter;
-import org.junit.platform.launcher.TestExecutionListener;
-import org.junit.platform.launcher.TestIdentifier;
-import org.junit.platform.launcher.TestPlan;
-import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder;
-
-import static org.junit.platform.engine.discovery.DiscoverySelectors.*;
-import static org.junit.platform.engine.discovery.ClassNameFilter.*;
-
-import org.junit.platform.launcher.core.LauncherFactory;
-import org.junit.platform.launcher.listeners.SummaryGeneratingListener;
-import org.junit.platform.launcher.listeners.TestExecutionSummary;
-import org.junit.platform.launcher.listeners.TestExecutionSummary.Failure;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * A command that executes all unit tests contained in the module.
- */
-@Component("unittest")
-public class UnitTestCommand extends AbstractTestCommand implements Command {
-
-    Logger logger = LoggerFactory.getLogger(UnitTestCommand.class);
-
-    @Override
-    public UnitTestResult executeTest(final ITestConfig config, String component) throws Exception {
-
-        logger.info("Spring-Boot test configuration {}", config);
-
-        logger.info("Scanning the classpath for test classes");
-        LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
-                .selectors(selectDirectory(config.getModuleBasePath()), selectPackage(config.getUnitTestBasePackage()))
-                .filters(includeClassNamePatterns(config.getUnitTestInclusionPattern()),
-                        excludeClassNamePatterns(config.getUnitTestExclusionPattern()), new IsAdmissableFilter(),
-                        new HasSpringbootAnnotationFilter())
-                .build();
-
-        // Add classes to the Request
-        Launcher launcher = LauncherFactory.create();
-        SummaryGeneratingListener listener = new SummaryGeneratingListener();
-        launcher.registerTestExecutionListeners(listener);
-        if (!config.getJmxDisabledNames().isEmpty()) {
-            launcher.registerTestExecutionListeners(new TestExecutionListener() {
-                @Override
-                public void executionStarted(TestIdentifier testId) {
-                    if (testId.isTest()) {
-                        try {
-                            disableJmx(config.getJmxDisabledNames());
-                        } catch (Exception e) {
-                            logger.error("Exception disabling JMX for test " + testId.getDisplayName(), e);
-                        }
-                    }
-                }
-            });
-        }
-        TestPlan testPlan = launcher.discover(request);
-        long nbTests = testPlan.countTestIdentifiers((t) -> {
-            return t.isTest();
-        });
-        if (nbTests > 0) {
-            logger.info("Found {} JUnit5 tests", nbTests);
-            launcher.execute(testPlan);
-
-            TestExecutionSummary result = listener.getSummary();
-            boolean testSucceeded = result.getTestsFailedCount() == 0;
-
-            logger.info(config.getModuleName() + " unit tests. " + "Success: " + testSucceeded + " - Test Run: "
-                    + result.getTestsStartedCount() + " - Failures: " + result.getTestsFailedCount()
-                    + " - Skipped Tests: " + result.getTestsSkippedCount());
-
-            StringBuilder failureString = new StringBuilder();
-            Throwable failureException = null;
-            for (Failure f : result.getFailures()) {
-                failureString
-                        .append(f.getTestIdentifier().getDisplayName() + " - " + f.getException().getMessage() + "\n");
-                logger.warn("Failed test description: {}", f.getTestIdentifier());
-                logger.warn("Message: {}", f.getException().getMessage());
-                if (f.getException() != null) {
-                    logger.error("Exception thrown from test", f.getException());
-                    failureException = f.getException();
-                }
-            }
-
-            if (!testSucceeded) {
-                if (failureException != null) {
-                    Assertions.fail(
-                            "Some unit tests failed (" + result.getTestsFailedCount() + "/"
-                                    + result.getTestsStartedCount() + ") : " + failureString.toString(),
-                            failureException);
-                } else {
-                    Assertions.fail("Some unit tests failed (" + result.getTestsFailedCount() + "/"
-                            + result.getTestsStartedCount() + ") : " + failureString.toString());
-                }
-            }
-
-            if (result.getTestsStartedCount() == 0 && config.getUnitTestsExpectedNumber() == null) {
-                Assertions.fail("No tests have been found");
-            }
-
-            Integer expectedTests = config.getUnitTestsExpectedNumber();
-            if (expectedTests != null && expectedTests != result.getTestsStartedCount()) {
-                Assertions.fail(
-                        "Wrong number of tests: expected " + expectedTests + " found " + result.getTestsStartedCount());
-            }
-
-            return new UnitTestResult(result);
-        } else {
-            logger.warn("No JUnit5 tests found for component {}", component);
-            return null;
-        }
-    }
-
-    private void disableJmx(Set<String> disabledJmx) throws Exception {
-        logger.info("Disabling JMX names: {}", disabledJmx);
-        for (MBeanServer server : getMBeanServers()) {
-            for (String jmxName : disabledJmx) {
-                logger.info("Disabling JMX query {}", jmxName);
-
-                ObjectName oName = new ObjectName(jmxName);
-                Set<ObjectName> names = new HashSet<>(server.queryNames(oName, null));
-                for (ObjectName name : names) {
-                    logger.info("Disabled JMX name {}", name);
-                    server.unregisterMBean(name);
-                }
-            }
-        }
-    }
-
-    private List<MBeanServer> getMBeanServers() {
-        List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
-        if (servers == null) {
-            servers = Collections.emptyList();
-        }
-        return servers;
-    }
-
-    private class HasSpringbootAnnotationFilter implements PostDiscoveryFilter {
-
-        @Override
-        public FilterResult apply(TestDescriptor testDescriptor) {
-            Optional<TestSource> source = testDescriptor.getSource();
-            Class<?> testClass = null;
-            if (source.isPresent() && source.get() instanceof MethodSource) {
-                if (source.get() instanceof MethodSource) {
-                    testClass = ((MethodSource) source.get()).getJavaClass();
-                } else if (source.get() instanceof ClassSource) {
-                    testClass = ((ClassSource) source.get()).getJavaClass();
-                }
-            }
-            if (testClass != null) {
-                logger.debug("Checking class " + testClass.getName());
-                for (Annotation annotation : testClass.getAnnotations()) {
-                    if (annotation.toString().contains("org.apache.camel.test.spring.junit5.CamelSpringBootTest")
-			    || annotation.toString().contains("org.apache.camel.test.spring.junit6.CamelSpringBootTest")
-                            || annotation.toString().contains("org.springframework.boot.test.context.SpringBootTest")) {
-                        return FilterResult.excluded("Not admissable");
-                    }
-                }
-            }
-
-            return FilterResult.included("");
-        }
-    }
-
-    private class IsAdmissableFilter implements PostDiscoveryFilter {
-
-        @Override
-        public FilterResult apply(TestDescriptor testDescriptor) {
-            Optional<TestSource> source = testDescriptor.getSource();
-            if (source.isPresent() && source.get() instanceof ClassSource) {
-                Class<?> testClass = ((ClassSource) source.get()).getJavaClass();
-                logger.debug("Checking class " + testClass.getName());
-                if (!isAdmissible(testClass)) {
-                    return FilterResult.excluded("Not admissable");
-                } else {
-                    return FilterResult.included("Admissable");
-                }
-            } else {
-                return FilterResult.included("");
-            }
-        }
-    }
-
-    private boolean isAdmissible(Class<?> testClass) {
-
-        if (testClass.getPackage().getName().startsWith("org.apache.camel.itest.springboot")) {
-            // no tests from the integration test suite
-            return false;
-        }
-
-        URL location = testClass.getResource("/" + testClass.getName().replace(".", "/") + ".class");
-        if (location != null) {
-            int firstLevel = location.toString().indexOf("!/");
-            int lastLevel = location.toString().lastIndexOf("!/");
-            if (firstLevel >= 0 && lastLevel >= 0 && firstLevel != lastLevel) {
-                // test class is in a nested jar, skipping
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/UnitTestResult.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/UnitTestResult.java
deleted file mode 100644
index 72aac751e45..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/command/UnitTestResult.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.command;
-
-import java.io.Serializable;
-
-import org.junit.platform.launcher.listeners.TestExecutionSummary;
-
-/**
- * Contains the result of the execution of a test suite. Can be rebuilt at the other classloader as it does not contain
- * reference to internal classes.
- */
-public class UnitTestResult implements Serializable {
-
-    private static final long serialVersionUID = -5015959334755321719L;
-
-    private int runCount;
-
-    private int failureCount;
-
-    private long runTime;
-
-    private int ignoreCount;
-
-    private boolean successful;
-
-    public UnitTestResult() {
-    }
-
-    public UnitTestResult(TestExecutionSummary jr) {
-        this.runCount = (int) jr.getTestsStartedCount();
-        this.failureCount = (int) jr.getTestsFailedCount();
-        this.runTime = jr.getTimeFinished() - jr.getTimeStarted();
-        this.ignoreCount = (int) jr.getTestsSkippedCount();
-        this.successful = jr.getTestsFailedCount() == 0;
-    }
-
-    public int getRunCount() {
-        return runCount;
-    }
-
-    public void setRunCount(int runCount) {
-        this.runCount = runCount;
-    }
-
-    public int getFailureCount() {
-        return failureCount;
-    }
-
-    public void setFailureCount(int failureCount) {
-        this.failureCount = failureCount;
-    }
-
-    public long getRunTime() {
-        return runTime;
-    }
-
-    public void setRunTime(long runTime) {
-        this.runTime = runTime;
-    }
-
-    public int getIgnoreCount() {
-        return ignoreCount;
-    }
-
-    public void setIgnoreCount(int ignoreCount) {
-        this.ignoreCount = ignoreCount;
-    }
-
-    public boolean isSuccessful() {
-        return successful;
-    }
-
-    public void setSuccessful(boolean successful) {
-        this.successful = successful;
-    }
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/AbstractSpringBootBaseTestSupport.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/AbstractSpringBootBaseTestSupport.java
new file mode 100644
index 00000000000..32af3c3226c
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/AbstractSpringBootBaseTestSupport.java
@@ -0,0 +1,370 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.springboot.common;
+
+import ch.qos.logback.classic.LoggerContext;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.cluster.CamelClusterService;
+import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.Language;
+import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public abstract class AbstractSpringBootBaseTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractSpringBootBaseTestSupport.class);
+    private static final String CLASSPATH_FILE = "target/classpath.txt";
+
+    @RegisterExtension
+    ArchetypeGenerationExtension archetype = new ArchetypeGenerationExtension(getArchetypeConfig());
+
+    private List<String> classpathEntries;
+
+    protected ArchetypeConfig.Builder baseArchetypeConfig() {
+        String name = inferModuleName(getClass());
+        return ArchetypeConfig.builder()
+                .artifactId(name)
+                .dependency(inferStarterDependency(getClass()))
+                .property("spring.main.banner-mode=off")
+                .property("camel.main.name=" + name)
+                .property("spring.groovy.template.check-template-location=false");
+    }
+
+    protected ArchetypeConfig getArchetypeConfig() {
+        return baseArchetypeConfig().build();
+    }
+
+    private ConfigurableApplicationContext applicationContext;
+    private URLClassLoader appClassLoader;
+    private ClassLoader originalClassLoader;
+
+    @BeforeAll
+    void compileAndStartApp() throws Exception {
+        ((LoggerContext) LoggerFactory.getILoggerFactory()).setName(inferModuleName(getClass()));
+
+        Path projectDir = archetype.getGeneratedProject().getProjectDir();
+
+        List<String> command = new ArrayList<>(List.of(
+                "mvn", "compile", "dependency:build-classpath",
+                "-DincludeScope=runtime",
+                "-Dmdep.outputFile=" + CLASSPATH_FILE,
+                "-B"));
+        String localRepo = System.getProperty("maven.repo.local");
+        if (localRepo != null) {
+            command.add("-Dmaven.repo.local=" + localRepo);
+        }
+
+        ProcessBuilder pb = new ProcessBuilder(command)
+                .directory(projectDir.toFile())
+                .redirectErrorStream(true);
+        Process process = pb.start();
+        String output = new String(process.getInputStream().readAllBytes());
+        int exitCode = process.waitFor();
+        if (exitCode != 0) {
+            throw new RuntimeException("mvn compile dependency:build-classpath failed (exit code "
+                    + exitCode + ") for " + projectDir + ":\n" + output);
+        }
+
+        Path classpathFile = projectDir.resolve(CLASSPATH_FILE);
+        String cpContent = Files.readString(classpathFile).trim();
+        classpathEntries = cpContent.isEmpty()
+                ? List.of()
+                : List.of(cpContent.split(File.pathSeparator));
+
+        // classloader: target/classes + all dependency JARs
+        Path classesDir = projectDir.resolve("target/classes");
+        List<URL> urls = new ArrayList<>();
+        urls.add(classesDir.toUri().toURL());
+        for (String entry : classpathEntries) {
+            urls.add(new File(entry).toURI().toURL());
+        }
+
+        appClassLoader = new URLClassLoader(
+                urls.toArray(URL[]::new),
+                Thread.currentThread().getContextClassLoader());
+
+        originalClassLoader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(appClassLoader);
+
+        Class<?> springAppClass = appClassLoader.loadClass("org.springframework.boot.SpringApplication");
+        Class<?> appClass = appClassLoader.loadClass(getArchetypeConfig().getMainClassFqn());
+
+        Object springApp = springAppClass.getConstructor(Class[].class)
+                .newInstance((Object) new Class<?>[]{appClass});
+
+        // to load application.properties from the generated project
+        Class<?> resourceLoaderClass = appClassLoader.loadClass("org.springframework.core.io.DefaultResourceLoader");
+        Object resourceLoader = resourceLoaderClass.getConstructor(ClassLoader.class)
+                .newInstance(appClassLoader);
+        Class<?> resourceLoaderInterface = appClassLoader.loadClass("org.springframework.core.io.ResourceLoader");
+        springAppClass.getMethod("setResourceLoader", resourceLoaderInterface)
+                .invoke(springApp, resourceLoader);
+
+        applicationContext = (ConfigurableApplicationContext) springAppClass
+                .getMethod("run", String[].class)
+                .invoke(springApp, (Object) new String[0]);
+
+        // Bridge CamelClusterService beans from Spring to the CamelContext service registry.
+        // The child classloader prevents DefaultConfigurationConfigurer.afterConfigure()
+        // from discovering these beans via the Camel registry.
+        if (getArchetypeConfig().isRegisterClusterServices()) {
+            Map<String, CamelClusterService> clusterServices
+                    = applicationContext.getBeansOfType(CamelClusterService.class);
+            for (CamelClusterService css : clusterServices.values()) {
+                getCamelContext().addService(css);
+            }
+        }
+    }
+
+    @Test
+    void camelContextIsRunning() {
+        Assertions.assertNotNull(getCamelContext());
+        Assertions.assertTrue(getCamelContext().isStarted());
+    }
+
+    @Test
+    void dependencyVersionMismatchTest() {
+        assertNoVersionMismatch();
+    }
+
+    protected void assertComponent(String name) {
+        Component component = getCamelContext().getComponent(name, true, false);
+        Assertions.assertNotNull(component, "Component not found: " + name);
+    }
+
+    @AfterAll
+    void stopApp() throws Exception {
+        try {
+            if (applicationContext != null) {
+                applicationContext.close();
+            }
+        } finally {
+            Thread.currentThread().setContextClassLoader(originalClassLoader);
+            if (appClassLoader != null) {
+                appClassLoader.close();
+            }
+        }
+    }
+
+    protected ConfigurableApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    protected CamelContext getCamelContext() {
+        return applicationContext.getBean(CamelContext.class);
+    }
+
+    protected void assertDataFormat(String name) {
+        DataFormat df = getCamelContext().resolveDataFormat(name);
+        Assertions.assertNotNull(df, "DataFormat not found: " + name);
+    }
+
+    protected void assertLanguage(String name) {
+        Language lang = getCamelContext().resolveLanguage(name);
+        Assertions.assertNotNull(lang, "Language not found: " + name);
+    }
+
+    /**
+     * Infers the Camel Spring Boot starter dependency GAV from the test class name.
+     * E.g. {@code CamelActivemq6IT} -> {@code org.apache.camel.springboot:camel-activemq6-starter}
+     */
+    protected static String inferStarterDependency(Class<?> testClass) {
+        return "org.apache.camel.springboot:" + inferModuleName(testClass) + "-starter";
+    }
+
+    /**
+     * Infers the Camel component name from the test class name.
+     * E.g. {@code CamelActivemq6IT} -> {@code activemq6}
+     */
+    protected static String inferComponentName(Class<?> testClass) {
+        String moduleName = inferModuleName(testClass);
+        return moduleName.startsWith("camel-") ? moduleName.substring("camel-".length()) : moduleName;
+    }
+
+    protected static String inferModuleName(Class<?> testClass) {
+        String name = testClass.getSimpleName();
+        int end = name.length();
+        if (name.endsWith("IT")) {
+            end = name.length() - 2;
+        } else if (name.endsWith("Test")) {
+            end = name.length() - 4;
+        }
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < end; i++) {
+            char c = name.charAt(i);
+            if (i > 0 && Character.isUpperCase(c) && !sb.isEmpty()) {
+                sb.append("-");
+            }
+            sb.append(Character.toLowerCase(c));
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Parses the runtime classpath entries (Maven local repository JAR paths) and detects
+     * version mismatches among artifacts sharing the same groupId and artifact prefix.
+     * <p>
+     * Maven repository paths follow the layout:
+     * {@code <repo>/<groupId-dirs>/<artifactId>/<version>/<artifactId>-<version>.jar}
+     */
+    protected void assertNoVersionMismatch() {
+        Assertions.assertNotNull(classpathEntries, "Classpath not resolved yet");
+
+        record Artifact(String groupId, String artifactId, String version) {}
+
+        List<Artifact> artifacts = new ArrayList<>();
+        for (String entry : classpathEntries) {
+            Path path = Path.of(entry);
+            String fileName = path.getFileName().toString();
+            if (!fileName.endsWith(".jar")) {
+                continue;
+            }
+
+            Path versionDir = path.getParent();
+            if (versionDir == null) continue;
+            Path artifactDir = versionDir.getParent();
+            if (artifactDir == null) continue;
+
+            String version = versionDir.getFileName().toString();
+            String artifactId = artifactDir.getFileName().toString();
+
+            String fullPath = artifactDir.getParent() == null ? "" : artifactDir.getParent().toString();
+            int repoIdx = fullPath.indexOf("repository" + File.separator);
+            if (repoIdx < 0) continue;
+            String groupPath = fullPath.substring(repoIdx + "repository".length() + 1);
+            String groupId = groupPath.replace(File.separatorChar, '.');
+
+            artifacts.add(new Artifact(groupId, artifactId, version));
+            LOG.debug("Dependency: {}:{}:{}", groupId, artifactId, version);
+        }
+
+        Map<String, Map<String, Set<String>>> status = new TreeMap<>();
+        for (Artifact a : artifacts) {
+            String artifactPrefix = a.artifactId();
+            if (artifactPrefix.contains("-")) {
+                artifactPrefix = artifactPrefix.substring(0, artifactPrefix.indexOf("-"));
+            }
+            String prefixId = a.groupId() + ":" + artifactPrefix;
+            String identifier = a.groupId() + ":" + a.artifactId();
+
+            status.computeIfAbsent(prefixId, k -> new TreeMap<>())
+                    .computeIfAbsent(identifier, k -> new LinkedHashSet<>())
+                    .add(a.version());
+        }
+
+        Set<String> mismatches = new TreeSet<>();
+        Set<String> potentialMismatches = new TreeSet<>();
+        for (Map.Entry<String, Map<String, Set<String>>> group : status.entrySet()) {
+            String prefixId = group.getKey();
+            Map<String, Set<String>> artifactVersions = group.getValue();
+
+            Set<String> allVersions = new TreeSet<>();
+            for (Set<String> versions : artifactVersions.values()) {
+                allVersions.addAll(versions);
+            }
+
+            if (allVersions.size() <= 1) {
+                continue;
+            }
+
+            boolean exactMismatch = artifactVersions.values().stream()
+                    .anyMatch(v -> v.size() > 1 && !differOnlyInPatch(v));
+            if (exactMismatch) {
+                mismatches.add(prefixId);
+            } else {
+                potentialMismatches.add(prefixId);
+            }
+        }
+
+        StringBuilder message = new StringBuilder();
+        for (String mismatch : mismatches) {
+            message.append("Version mismatch for ").append(mismatch).append(":\n");
+            for (Map.Entry<String, Set<String>> entry : status.get(mismatch).entrySet()) {
+                message.append("  - ").append(entry.getKey()).append(" --> ").append(entry.getValue()).append("\n");
+            }
+        }
+
+        StringBuilder warnings = new StringBuilder();
+        for (String mismatch : potentialMismatches) {
+            warnings.append("Potential version mismatch for ").append(mismatch).append(":\n");
+            for (Map.Entry<String, Set<String>> entry : status.get(mismatch).entrySet()) {
+                warnings.append("  - ").append(entry.getKey()).append(" --> ").append(entry.getValue()).append("\n");
+            }
+        }
+
+        if (!warnings.isEmpty()) {
+            String moduleName = inferModuleName(getClass());
+            String warningText = "=== Potential version mismatches for " + moduleName + " ===\n" + warnings;
+            LOG.warn(warningText);
+            try {
+                String reportsDir = System.getProperty("project.build.directory", "target") + "/failsafe-reports";
+                Path reportFile = Path.of(reportsDir, moduleName + "-version-mismatches.txt");
+                Files.createDirectories(reportFile.getParent());
+                Files.writeString(reportFile, warningText);
+            } catch (IOException e) {
+                LOG.warn("Failed to write version mismatch report: " + e.getMessage());
+            }
+        }
+
+        Assertions.assertTrue(mismatches.isEmpty(),
+                "Library version mismatches found in runtime dependencies:\n" + message);
+    }
+
+    /**
+     * Returns the major.minor prefix of a semantic version string.
+     * E.g. {@code "1.2.3"} -> {@code "1.2"}, {@code "4.19.0-SNAPSHOT"} -> {@code "4.19"}.
+     * Returns the full version if it has fewer than two dot-separated segments.
+     */
+    private static String majorMinor(String version) {
+        int first = version.indexOf('.');
+        if (first < 0) {
+            return version;
+        }
+        int second = version.indexOf('.', first + 1);
+        return second < 0 ? version : version.substring(0, second);
+    }
+
+    /**
+     * Returns {@code true} if all versions in the set share the same major.minor
+     * and only differ in patch (or qualifier).
+     */
+    private static boolean differOnlyInPatch(Set<String> versions) {
+        return versions.stream().map(AbstractSpringBootBaseTestSupport::majorMinor).distinct().count() <= 1;
+    }
+}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/ArchetypeConfig.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/ArchetypeConfig.java
new file mode 100644
index 00000000000..e33cc662d44
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/ArchetypeConfig.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.springboot.common;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ArchetypeConfig {
+
+    private static final String DEFAULT_ARTIFACT_ID = "test-project";
+    private static final String DEFAULT_GROUP_ID = "com.example";
+    private static final String DEFAULT_VERSION = "1.0-SNAPSHOT";
+    private static final String DEFAULT_PACKAGE = "com.example";
+    private static final String DEFAULT_MAIN_CLASS_NAME = "MySpringBootApplication";
+
+    final String artifactId;
+    final String groupId;
+    final String version;
+    final String packageName;
+    final String mainClassName;
+    private final List<String> dependencies;
+    private final List<String> properties;
+    private final boolean registerClusterServices;
+    private final boolean webRequired;
+    private final Map<String, String> sourceFiles;
+
+    private ArchetypeConfig(Builder builder) {
+        this.artifactId = builder.artifactId;
+        this.groupId = builder.groupId;
+        this.version = builder.version;
+        this.packageName = builder.packageName;
+        this.mainClassName = builder.mainClassName;
+        this.dependencies = List.copyOf(builder.dependencies);
+        this.properties = List.copyOf(builder.properties);
+        this.registerClusterServices = builder.registerClusterServices;
+        this.webRequired = builder.webRequired;
+        this.sourceFiles = Map.copyOf(builder.sourceFiles);
+    }
+
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public String getPackageName() {
+        return packageName;
+    }
+
+    public String getMainClassName() {
+        return mainClassName;
+    }
+
+    public String getMainClassFqn() {
+        return packageName + "." + mainClassName;
+    }
+
+    public List<String> getDependencies() {
+        return dependencies;
+    }
+
+    public List<String> getProperties() {
+        return properties;
+    }
+
+    public boolean isRegisterClusterServices() {
+        return registerClusterServices;
+    }
+
+    public boolean isWebRequired() {
+        return webRequired;
+    }
+
+    public Map<String, String> getSourceFiles() {
+        return sourceFiles;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+
+        private String artifactId = DEFAULT_ARTIFACT_ID;
+        private String groupId = DEFAULT_GROUP_ID;
+        private String version = DEFAULT_VERSION;
+        private String packageName = DEFAULT_PACKAGE;
+        private String mainClassName = DEFAULT_MAIN_CLASS_NAME;
+        private final List<String> dependencies = new ArrayList<>();
+        private final List<String> properties = new ArrayList<>();
+        private boolean registerClusterServices;
+        private boolean webRequired;
+        private final Map<String, String> sourceFiles = new LinkedHashMap<>();
+
+        public Builder artifactId(String artifactId) {
+            this.artifactId = artifactId;
+            return this;
+        }
+
+        public Builder groupId(String groupId) {
+            this.groupId = groupId;
+            return this;
+        }
+
+        public Builder version(String version) {
+            this.version = version;
+            return this;
+        }
+
+        public Builder packageName(String packageName) {
+            this.packageName = packageName;
+            return this;
+        }
+
+        public Builder mainClassName(String mainClassName) {
+            this.mainClassName = mainClassName;
+            return this;
+        }
+
+        public Builder dependency(String gav) {
+            this.dependencies.add(gav);
+            return this;
+        }
+
+        public Builder property(String entry) {
+            this.properties.add(entry);
+            return this;
+        }
+
+        public Builder registerClusterServices(boolean register) {
+            this.registerClusterServices = register;
+            return this;
+        }
+
+        public Builder webRequired(boolean webRequired) {
+            this.webRequired = webRequired;
+            return this;
+        }
+
+        /**
+         * Adds a Java source file to the generated project before compilation.
+         *
+         * @param fqcn   fully qualified class name (e.g. {@code "com.example.TestConfig"})
+         * @param source the Java source code
+         */
+        public Builder sourceFile(String fqcn, String source) {
+            this.sourceFiles.put(fqcn, source);
+            return this;
+        }
+
+        public ArchetypeConfig build() {
+            return new ArchetypeConfig(this);
+        }
+    }
+}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/ArchetypeGenerationExtension.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/ArchetypeGenerationExtension.java
new file mode 100644
index 00000000000..932ab937abc
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/common/ArchetypeGenerationExtension.java
@@ -0,0 +1,279 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.springboot.common;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
+import org.apache.maven.archetype.generator.ArchetypeGenerator;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.codehaus.plexus.DefaultContainerConfiguration;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+import org.junit.jupiter.api.extension.ParameterContext;
+import org.junit.jupiter.api.extension.ParameterResolver;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Map;
+import java.util.Properties;
+
+public class ArchetypeGenerationExtension implements BeforeAllCallback, BeforeEachCallback, ParameterResolver {
+
+    private static final Namespace NAMESPACE = Namespace.create(ArchetypeGenerationExtension.class);
+
+    private static final String ARCHETYPE_GROUP_ID = "org.apache.camel.archetypes";
+    private static final String ARCHETYPE_ARTIFACT_ID = "camel-archetype-spring-boot";
+
+    private final ArchetypeConfig archetypeConfig;
+    private GeneratedProject generatedProject;
+
+    public ArchetypeGenerationExtension() {
+        this(ArchetypeConfig.builder().build());
+    }
+
+    public ArchetypeGenerationExtension(ArchetypeConfig archetypeConfig) {
+        this.archetypeConfig = archetypeConfig;
+    }
+
+    @Override
+    public void beforeAll(ExtensionContext context) throws Exception {
+        ensureProjectCreated(context);
+    }
+
+    @Override
+    public void beforeEach(ExtensionContext context) throws Exception {
+        ensureProjectCreated(context);
+    }
+
+    private void ensureProjectCreated(ExtensionContext context) {
+        if (generatedProject == null) {
+            generatedProject = createProject();
+            // Register in store for cleanup
+            context.getStore(NAMESPACE).put(GeneratedProject.class, generatedProject);
+        }
+    }
+
+    @Override
+    public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
+        return parameterContext.getParameter().getType() == GeneratedProject.class;
+    }
+
+    @Override
+    public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
+        return generatedProject;
+    }
+
+    private GeneratedProject createProject() {
+        try {
+            Path targetDir = Path.of(requireSystemProperty("project.build.directory"));
+            Files.createDirectories(targetDir);
+            Path outputDir = Files.createTempDirectory(targetDir, "archetype-test-");
+
+            DefaultContainerConfiguration config = new DefaultContainerConfiguration();
+            config.setClassPathScanning(PlexusConstants.SCANNING_ON);
+            DefaultPlexusContainer container = new DefaultPlexusContainer(config);
+            ArchetypeGenerator generator = container.lookup(ArchetypeGenerator.class);
+
+            String archetypeVersion = requireSystemProperty("project-version");
+            String camelVersion = requireSystemProperty("camel-version");
+            String springBootVersion = requireSystemProperty("spring-boot-version");
+            String mavenCompilerPluginVersion = requireSystemProperty("maven-compiler-plugin-version");
+
+            File archetypeFile = resolveArchetypeJar(archetypeVersion);
+            if (!archetypeFile.exists()) {
+                throw new IllegalStateException("Archetype JAR not found at: " + archetypeFile
+                        + ". Run 'mvn install -pl archetypes/camel-archetype-spring-boot -am -DskipTests' first.");
+            }
+
+            Properties additionalProperties = new Properties();
+            additionalProperties.setProperty("camel-version", camelVersion);
+            additionalProperties.setProperty("spring-boot-version", springBootVersion);
+            additionalProperties.setProperty("maven-compiler-plugin-version", mavenCompilerPluginVersion);
+
+            ArchetypeGenerationRequest request = new ArchetypeGenerationRequest()
+                    .setArchetypeGroupId(ARCHETYPE_GROUP_ID)
+                    .setArchetypeArtifactId(ARCHETYPE_ARTIFACT_ID)
+                    .setArchetypeVersion(archetypeVersion)
+                    .setGroupId(archetypeConfig.groupId)
+                    .setArtifactId(archetypeConfig.artifactId)
+                    .setVersion(archetypeConfig.version)
+                    .setPackage(archetypeConfig.packageName)
+                    .setOutputDirectory(outputDir.toString())
+                    .setProperties(additionalProperties);
+
+            ArchetypeGenerationResult result = new ArchetypeGenerationResult();
+            generator.generateArchetype(request, archetypeFile, result);
+
+            Path projectDir = outputDir.resolve(archetypeConfig.artifactId);
+            customizeArchetype(projectDir, archetypeConfig);
+            return new GeneratedProject(outputDir, projectDir, result);
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to generate archetype project", e);
+        }
+    }
+
+    private static String requireSystemProperty(String key) {
+        String value = System.getProperty(key);
+        if (value == null) {
+            throw new RuntimeException("Required system property '" + key + "' is not set");
+        }
+        return value;
+    }
+
+    private File resolveArchetypeJar(String version) {
+        String localRepo = System.getProperty("maven.repo.local");
+        if (localRepo == null) {
+            localRepo = System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository";
+        }
+        return Path.of(localRepo, ARCHETYPE_GROUP_ID.replace('.', File.separatorChar)
+                , ARCHETYPE_ARTIFACT_ID, version, ARCHETYPE_ARTIFACT_ID + "-" + version + ".jar").toFile();
+    }
+
+    public GeneratedProject getGeneratedProject() {
+        return generatedProject;
+    }
+
+    /**
+     * Strips the generated archetype project down to only the {@code @SpringBootApplication} main class.
+     * Removes the entire {@code src/test} tree and all Java source files under {@code src/main/java}
+     * except the main application class defined in the config. Adds any extra dependencies from the
+     * config to the generated pom.xml.
+     */
+    public static void customizeArchetype(Path projectDir, ArchetypeConfig config) throws Exception {
+        String mainClassFile = config.getMainClassName() + ".java";
+
+        FileUtils.deleteQuietly(projectDir.resolve("src/test").toFile());
+
+        Path mainJavaDir = projectDir.resolve("src/main/java");
+        if (Files.exists(mainJavaDir)) {
+            Files.walk(mainJavaDir)
+                    .filter(p -> p.toString().endsWith(".java"))
+                    .filter(p -> !p.getFileName().toString().equals(mainClassFile))
+                    .forEach(p -> p.toFile().delete());
+        }
+
+        Path pomFile = projectDir.resolve("pom.xml");
+        MavenXpp3Reader reader = new MavenXpp3Reader();
+        Model model;
+        try (Reader r = Files.newBufferedReader(pomFile)) {
+            model = reader.read(r);
+        }
+
+        model.getDependencies().removeIf(d -> "test".equals(d.getScope()));
+        model.getDependencies().removeIf(d -> "camel-stream-starter".equals(d.getArtifactId()));
+
+        if (!config.isWebRequired()) {
+            model.getDependencies().removeIf(d -> !"camel-spring-boot-starter".equals(d.getArtifactId()));
+        }
+
+        for (String gav : config.getDependencies()) {
+            model.addDependency(parseDependency(gav));
+        }
+
+        MavenXpp3Writer writer = new MavenXpp3Writer();
+        try (Writer w = Files.newBufferedWriter(pomFile)) {
+            writer.write(w, model);
+        }
+
+        Path appProps = projectDir.resolve("src/main/resources/application.properties");
+        Properties properties = new Properties();
+        try (InputStream in = Files.newInputStream(appProps)) {
+            properties.load(in);
+        }
+        if (config.isWebRequired()) {
+            properties.setProperty("server.port", "0");
+        } else {
+            properties.setProperty("spring.main.web-application-type", "none");
+        }
+        for (String prop : config.getProperties()) {
+            int eq = prop.indexOf('=');
+            if (eq >= 0) {
+                properties.setProperty(prop.substring(0, eq), prop.substring(eq + 1));
+            }
+        }
+        try (OutputStream out = Files.newOutputStream(appProps)) {
+            properties.store(out, null);
+        }
+
+        for (Map.Entry<String, String> entry : config.getSourceFiles().entrySet()) {
+            Path sourceFile = projectDir.resolve("src/main/java/"
+                    + entry.getKey().replace('.', '/') + ".java");
+            Files.createDirectories(sourceFile.getParent());
+            Files.writeString(sourceFile, entry.getValue());
+        }
+    }
+
+    /**
+     * Parses a GAV string in the format {@code groupId:artifactId[:version]} into a Maven {@link Dependency}.
+     */
+    private static Dependency parseDependency(String gav) {
+        String[] parts = gav.split(":");
+        if (parts.length < 2 || parts.length > 3) {
+            throw new IllegalArgumentException("Invalid dependency GAV: '" + gav
+                    + "'. Expected format: groupId:artifactId[:version]");
+        }
+        Dependency dep = new Dependency();
+        dep.setGroupId(parts[0]);
+        dep.setArtifactId(parts[1]);
+        if (parts.length == 3) {
+            dep.setVersion(parts[2]);
+        }
+        return dep;
+    }
+
+    public static class GeneratedProject implements AutoCloseable {
+
+        private final Path outputDir;
+        private final Path projectDir;
+        private final ArchetypeGenerationResult result;
+
+        GeneratedProject(Path outputDir, Path projectDir, ArchetypeGenerationResult result) {
+            this.outputDir = outputDir;
+            this.projectDir = projectDir;
+            this.result = result;
+        }
+
+        public Path getProjectDir() {
+            return projectDir;
+        }
+
+        public ArchetypeGenerationResult getResult() {
+            return result;
+        }
+
+        @Override
+        public void close() throws Exception {
+            if (Boolean.parseBoolean(System.getProperty("delete-after-test", "true"))
+                    && outputDir != null && Files.exists(outputDir)) {
+                FileUtils.deleteQuietly(outputDir.toFile());
+            }
+        }
+    }
+}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/util/CreateTestClass.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/util/CreateTestClass.java
new file mode 100644
index 00000000000..12b601c477a
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/util/CreateTestClass.java
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.springboot.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+/**
+ * Generates a skeleton integration test class for a Camel Spring Boot starter.
+ * <p>
+ * Usage via Maven:
+ * <pre>
+ * mvn -Pgenerate -Dstarter=activemq6 -pl tests/camel-itest-spring-boot
+ * </pre>
+ * <p>
+ * Examples:
+ * <ul>
+ *   <li>{@code camel-activemq6-starter} -> {@code CamelActivemq6IT.java}</li>
+ *   <li>{@code camel-xslt-saxon-starter} -> {@code CamelXsltSaxonIT.java}</li>
+ *   <li>{@code camel-aws2-s3-starter} -> {@code CamelAws2S3IT.java}</li>
+ * </ul>
+ */
+public final class CreateTestClass {
+
+    private static final Logger LOG = LoggerFactory.getLogger(CreateTestClass.class);
+
+    private static final String PACKAGE = "org.apache.camel.itest.springboot";
+
+    private static final String TEMPLATE = """
+            /*
+             * Licensed to the Apache Software Foundation (ASF) under one or more
+             * contributor license agreements.  See the NOTICE file distributed with
+             * this work for additional information regarding copyright ownership.
+             * The ASF licenses this file to You under the Apache License, Version 2.0
+             * (the "License"); you may not use this file except in compliance with
+             * the License.  You may obtain a copy of the License at
+             *
+             *      http://www.apache.org/licenses/LICENSE-2.0
+             *
+             * Unless required by applicable law or agreed to in writing, software
+             * distributed under the License is distributed on an "AS IS" BASIS,
+             * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+             * See the License for the specific language governing permissions and
+             * limitations under the License.
+             */
+            package %s;
+
+            import %s.common.AbstractSpringBootBaseTestSupport;
+            import org.junit.jupiter.api.Test;
+
+            public class %s extends AbstractSpringBootBaseTestSupport {
+
+                @Test
+                void componentTest() {
+                    assertComponent(inferComponentName(getClass()));
+                }
+            }
+            """;
+
+    private CreateTestClass() {
+    }
+
+    public static void main(String[] args) {
+        if (args.length != 1) {
+            LOG.error("Usage: CreateTestClass <starter-name>");
+            LOG.error("  e.g. CreateTestClass camel-activemq6-starter");
+            System.exit(1);
+        }
+
+        String starter = args[0];
+        if ("camel-REQUIRED-starter".equals(starter)) {
+            LOG.error("Usage: mvn -Pgenerate -Dstarter=<component> -pl tests/camel-itest-spring-boot");
+            LOG.error("  e.g. mvn -Pgenerate -Dstarter=activemq6 -pl tests/camel-itest-spring-boot");
+            System.exit(1);
+        }
+        String className = toClassName(starter);
+        String baseDir = System.getProperty("project.basedir", ".");
+        Path targetDir = Path.of(baseDir, "src/test/java", PACKAGE.replace('.', '/'));
+        Path targetFile = targetDir.resolve(className + ".java");
+
+        if (Files.exists(targetFile)) {
+            LOG.error("File already exists: {}", targetFile);
+            System.exit(1);
+        }
+
+        String content = String.format(TEMPLATE, PACKAGE, PACKAGE, className);
+
+        try {
+            Files.createDirectories(targetDir);
+            Files.writeString(targetFile, content);
+            LOG.info("Created {}", targetFile);
+        } catch (IOException e) {
+            LOG.error("Failed to write file: {}", e.getMessage(), e);
+            System.exit(1);
+        }
+    }
+
+    /**
+     * Converts a starter name to a PascalCase test class name.
+     * <p>
+     * Examples:
+     * <ul>
+     *   <li>{@code camel-activemq6-starter} -> {@code CamelActivemq6IT}</li>
+     *   <li>{@code camel-xslt-saxon-starter} -> {@code CamelXsltSaxonIT}</li>
+     *   <li>{@code camel-aws2-s3-starter} -> {@code CamelAws2S3IT}</li>
+     * </ul>
+     */
+    static String toClassName(String starter) {
+        // Strip -starter suffix if present
+        String module = starter.endsWith("-starter")
+                ? starter.substring(0, starter.length() - "-starter".length())
+                : starter;
+
+        StringBuilder sb = new StringBuilder();
+        boolean capitalizeNext = true;
+        for (int i = 0; i < module.length(); i++) {
+            char c = module.charAt(i);
+            if (c == '-') {
+                capitalizeNext = true;
+            } else {
+                sb.append(capitalizeNext ? Character.toUpperCase(c) : c);
+                capitalizeNext = false;
+            }
+        }
+        sb.append("IT");
+        return sb.toString();
+    }
+}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/util/SerializationUtils.java b/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/util/SerializationUtils.java
deleted file mode 100644
index d759582350d..00000000000
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/util/SerializationUtils.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-/**
- * Provide basic serialization utils. Cannot rely on common available libraries to not influence the test outcome.
- */
-public final class SerializationUtils {
-
-    private SerializationUtils() {
-    }
-
-    public static byte[] marshal(Object o) {
-        try (ByteArrayOutputStream out = new ByteArrayOutputStream();
-                ObjectOutputStream oout = new ObjectOutputStream(out)) {
-            oout.writeObject(o);
-            oout.flush();
-            return out.toByteArray();
-        } catch (IOException e) {
-            throw new RuntimeException("Unable to marshal the bean " + o, e);
-        }
-    }
-
-    public static Object unmarshal(byte[] content) {
-        if (content == null) {
-            return null;
-        }
-
-        try (ByteArrayInputStream in = new ByteArrayInputStream(content);
-                ObjectInputStream oin = new ObjectInputStream(in)) {
-            Object bean = oin.readObject();
-            return bean;
-
-        } catch (IOException | ClassNotFoundException e) {
-            throw new RuntimeException("Unable to unmarshal the bean", e);
-        }
-    }
-
-    public static Throwable transferable(Throwable ex) {
-        try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw)) {
-            ex.printStackTrace(pw);
-            pw.flush();
-
-            return new Exception("Error while executing tests. Wrapped exception is: " + sw.toString());
-        } catch (IOException e) {
-            return new RuntimeException("Error while cleaning up the exception. Message=" + e.getMessage());
-        }
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/resources/logback.xml b/tests/camel-itest-spring-boot/src/main/resources/logback.xml
new file mode 100644
index 00000000000..9baeaf36980
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/main/resources/logback.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>[%-5level] %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+    </root>
+</configuration>
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/converter/myconverter/StaticDummyFallbackConverter.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/converter/myconverter/StaticDummyFallbackConverter.java
deleted file mode 100644
index 3271b5afb10..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/converter/myconverter/StaticDummyFallbackConverter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.converter.myconverter;
-
-import java.util.TimeZone;
-
-import org.apache.camel.Converter;
-import org.apache.camel.Exchange;
-import org.apache.camel.spi.TypeConverterRegistry;
-
-/**
- * Converter added here to overcome issue CAMEL-10060 in integration tests (Needed because some unit tests create new
- * camel contexts from scratch).
- */
-@Converter
-public final class StaticDummyFallbackConverter {
-
-    private StaticDummyFallbackConverter() {
-    }
-
-    @Converter(fallback = true)
-    public static Object convertTo(Class<?> type, Exchange exchange, Object value, TypeConverterRegistry registry) {
-        if (TimeZone.class.isAssignableFrom(value.getClass())) {
-            return "Time talks";
-        }
-        return null;
-    }
-
-}
\ No newline at end of file
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/AbstractSpringBootTestSupport.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/AbstractSpringBootTestSupport.java
deleted file mode 100644
index f6d347a52a3..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/AbstractSpringBootTestSupport.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import java.lang.reflect.Method;
-
-import org.apache.camel.itest.springboot.arquillian.ArquillianSyncBootJarLauncher;
-import org.apache.camel.itest.springboot.util.SpringBootContainerFacade;
-import org.junit.jupiter.api.BeforeEach;
-
-/**
- * This is the base class of all spring-boot integration tests.
- */
-public abstract class AbstractSpringBootTestSupport {
-
-    protected ITestConfig config;
-
-    private SpringBootContainerFacade facade;
-
-    /**
-     * Starts a spring-boot container with the module under test.
-     *
-     * @throws Exception
-     */
-    @BeforeEach
-    public void startSpringBoot() throws Exception {
-        this.config = retrieveConfig();
-
-        ArquillianSyncBootJarLauncher launcher = new ArquillianSyncBootJarLauncher();
-        launcher.run(new String[] {});
-
-        this.facade = new SpringBootContainerFacade(launcher.getClassLoader());
-    }
-
-    protected static String inferModuleName(Class<?> testClass) {
-        String name = testClass.getSimpleName();
-        int id1 = name.indexOf("Test");
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < id1; i++) {
-            char c = name.charAt(i);
-            if (i > 0 && Character.isUpperCase(c) && sb.length() > 0) {
-                sb.append("-");
-            }
-            sb.append(Character.toLowerCase(c));
-        }
-        return sb.toString();
-    }
-
-    protected String defaultComponentName() throws Exception {
-        return config.getModuleName().replace("camel-", "");
-    }
-
-    protected void runComponentTest(ITestConfig config) throws Exception {
-        this.runComponentTest(config, defaultComponentName());
-    }
-
-    protected void runComponentTest(ITestConfig config, String componentName) throws Exception {
-        facade.executeTest("module", config, componentName);
-    }
-
-    protected void runDataformatTest(ITestConfig config) throws Exception {
-        this.runDataformatTest(config, defaultComponentName());
-    }
-
-    protected void runDataformatTest(ITestConfig config, String dataFormatName) throws Exception {
-        facade.executeTest("dataformat", config, dataFormatName);
-    }
-
-    protected void runLanguageTest(ITestConfig config) throws Exception {
-        this.runLanguageTest(config, defaultComponentName());
-    }
-
-    protected void runLanguageTest(ITestConfig config, String language) throws Exception {
-        facade.executeTest("language", config, language);
-    }
-
-    protected void runModuleUnitTestsIfEnabled(ITestConfig config) throws Exception {
-        if (config.getUnitTestEnabled()) {
-            this.runModuleUnitTests(config);
-        }
-    }
-
-    protected void runModuleUnitTests(ITestConfig config) throws Exception {
-        facade.executeTest("unittest", config, config.getModuleName().replace("camel-", ""));
-    }
-
-    protected ITestConfig retrieveConfig() throws Exception {
-        Method confMethod = this.getClass().getMethod("createTestConfig");
-        ITestConfig conf = (ITestConfig) confMethod.invoke(null);
-        return conf;
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestXmlConfiguration.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemq6IT.java
similarity index 66%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestXmlConfiguration.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemq6IT.java
index 993162926e8..ee752028296 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/ITestXmlConfiguration.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemq6IT.java
@@ -16,15 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.ImportResource;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Loads 'META-INF/spring/spring.xml' if present.
- */
-@Configuration
-@ConditionalOnResource(resources = "META-INF/spring/spring.xml")
-@ImportResource("META-INF/spring/spring.xml")
-public class ITestXmlConfiguration {
+public class CamelActivemq6IT extends AbstractSpringBootBaseTestSupport {
+
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemq6Test.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemq6Test.java
deleted file mode 100644
index 83b3e2b8f41..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemq6Test.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelActivemq6Test extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelActivemq6Test.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemqIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemqIT.java
index 1619fbee3b9..c58272e108d 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemqIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelActivemqIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemqTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemqTest.java
deleted file mode 100644
index 3d48651c208..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelActivemqTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelActivemqTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelActivemqTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAmqpIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAmqpIT.java
index 1619fbee3b9..3c20fe9cdf9 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAmqpIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAmqpIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAmqpTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAmqpTest.java
deleted file mode 100644
index e6d132652db..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAmqpTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAmqpTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAmqpTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelArangodbIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelArangodbIT.java
index 1619fbee3b9..b2e51de8581 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelArangodbIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelArangodbIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelArangodbTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelArangodbTest.java
deleted file mode 100644
index c9fe70416ea..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelArangodbTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelArangodbTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelArangodbTest.class)).unitTestsEnabled(false)
-                .build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAs2IT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAs2IT.java
index 1619fbee3b9..3e637385079 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAs2IT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAs2IT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAs2Test.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAs2Test.java
deleted file mode 100644
index 645bd8d7dbc..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAs2Test.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAs2Test extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAs2Test.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsn1IT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsn1IT.java
index 1619fbee3b9..a1e2275b47d 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsn1IT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAsn1IT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsn1Test.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsn1Test.java
deleted file mode 100644
index 902ef0d5420..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsn1Test.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAsn1Test extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAsn1Test.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runDataformatTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsteriskIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsteriskIT.java
index 1619fbee3b9..2df34d605d1 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsteriskIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAsteriskIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsteriskTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsteriskTest.java
deleted file mode 100644
index 53f5c5d2817..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAsteriskTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAsteriskTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAsteriskTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtmosphereWebsocketIT.java
similarity index 73%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtmosphereWebsocketIT.java
index 1619fbee3b9..0c024cc7202 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtmosphereWebsocketIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAtmosphereWebsocketIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtmosphereWebsocketTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtmosphereWebsocketTest.java
deleted file mode 100644
index cce567fbfc4..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtmosphereWebsocketTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAtmosphereWebsocketTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAtmosphereWebsocketTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtomIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtomIT.java
index 1619fbee3b9..1297e5d177e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtomIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAtomIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtomTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtomTest.java
deleted file mode 100644
index 2c5a5b4a177..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAtomTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAtomTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAtomTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroIT.java
index 1619fbee3b9..0a82e597870 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAvroIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroRpcIT.java
similarity index 76%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroRpcIT.java
index 1619fbee3b9..1fa39ada1b9 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroRpcIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAvroRpcIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent("avro");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroRpcTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroRpcTest.java
deleted file mode 100644
index 50b7474061f..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroRpcTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAvroRpcTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAvroRpcTest.class))
-                .dependency("org.apache.avro:avro:1.11.3").dependency("org.apache.avro:avro-ipc:1.11.3")
-                .dependency("org.apache.avro:avro-ipc-jetty:1.11.3").dependency("org.apache.avro:avro-ipc-netty:1.11.3")
-                .build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(createTestConfig(), "avro");
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroTest.java
deleted file mode 100644
index 7a947d98994..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAvroTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAvroTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAvroTest.class))
-                .dependency("org.apache.avro:avro:1.11.3").dependency("org.apache.avro:avro-ipc:1.11.3")
-                .dependency("org.apache.avro:avro-ipc-jetty:1.11.3").dependency("org.apache.avro:avro-ipc-netty:1.11.3")
-                .build();
-    }
-
-    @Test
-    public void moduleTests() throws Exception {
-        this.runDataformatTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2AthenaIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2AthenaIT.java
index 1619fbee3b9..1b44c6eec8d 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2AthenaIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2AthenaIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2AthenaTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2AthenaTest.java
deleted file mode 100644
index 8ed6d7828fd..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2AthenaTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2AthenaTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2AthenaTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2ComprehendIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2ComprehendIT.java
index 1619fbee3b9..3281d15cb48 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2ComprehendIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2ComprehendIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2ComprehendTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2ComprehendTest.java
deleted file mode 100644
index 1ed89fe2065..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2ComprehendTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2ComprehendTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2ComprehendTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2CwIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2CwIT.java
index 1619fbee3b9..84c0a3c4032 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2CwIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2CwIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2CwTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2CwTest.java
deleted file mode 100644
index a8cc7475056..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2CwTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2CwTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2CwTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2DdbIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2DdbIT.java
index 1619fbee3b9..8c50f57b637 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2DdbIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2DdbIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2DdbTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2DdbTest.java
deleted file mode 100644
index cc91385fc04..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2DdbTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2DdbTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2DdbTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(createTestConfig(), "aws2-ddb");
-        this.runComponentTest(createTestConfig(), "aws2-ddbstream");
-
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2Ec2IT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2Ec2IT.java
index 1619fbee3b9..0a09d5073c9 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2Ec2IT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2Ec2IT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2Ec2Test.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2Ec2Test.java
deleted file mode 100644
index c0df173ea6a..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2Ec2Test.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2Ec2Test extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2Ec2Test.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EcsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EcsIT.java
index 1619fbee3b9..444edf99523 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EcsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2EcsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EcsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EcsTest.java
deleted file mode 100644
index 71e17309d6e..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EcsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2EcsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2EcsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EksIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EksIT.java
index 1619fbee3b9..601394b044b 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EksIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2EksIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EksTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EksTest.java
deleted file mode 100644
index aeb827d90f9..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EksTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2EksTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2EksTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EventbridgeIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EventbridgeIT.java
index 1619fbee3b9..1392531ee64 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EventbridgeIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2EventbridgeIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EventbridgeTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EventbridgeTest.java
deleted file mode 100644
index 634481806bd..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2EventbridgeTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2EventbridgeTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2EventbridgeTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2IamIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2IamIT.java
index 1619fbee3b9..1b1bc19a1c6 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2IamIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2IamIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2IamTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2IamTest.java
deleted file mode 100644
index d6942ea8929..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2IamTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2IamTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2IamTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KinesisIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KinesisIT.java
index 1619fbee3b9..95f64f87c7d 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KinesisIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2KinesisIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KinesisTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KinesisTest.java
deleted file mode 100644
index a6bad134746..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KinesisTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2KinesisTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2KinesisTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(createTestConfig(), "aws2-kinesis");
-        this.runComponentTest(createTestConfig(), "aws2-kinesis-firehose");
-
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KmsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KmsIT.java
index 1619fbee3b9..3bc4874450b 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KmsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2KmsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KmsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KmsTest.java
deleted file mode 100644
index 6a844367c10..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2KmsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2KmsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2KmsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2LambdaIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2LambdaIT.java
index 1619fbee3b9..140db5d94d3 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2LambdaIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2LambdaIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2LambdaTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2LambdaTest.java
deleted file mode 100644
index 725f0352e9e..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2LambdaTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2LambdaTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2LambdaTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MqIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MqIT.java
index 1619fbee3b9..a77571256a1 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MqIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2MqIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MqTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MqTest.java
deleted file mode 100644
index ae14638833d..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MqTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2MqTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2MqTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MskIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MskIT.java
index 1619fbee3b9..b3ebc85bacf 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MskIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2MskIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MskTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MskTest.java
deleted file mode 100644
index d3ac3799b33..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2MskTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2MskTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2MskTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2PollyIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2PollyIT.java
index 1619fbee3b9..d073ab2165f 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2PollyIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2PollyIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2PollyTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2PollyTest.java
deleted file mode 100644
index e1831cb3cb4..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2PollyTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2PollyTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2PollyTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RedshiftIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RedshiftIT.java
index 1619fbee3b9..cd8354dc86e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RedshiftIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2RedshiftIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent("aws2-redshift-data");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RedshiftTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RedshiftTest.java
deleted file mode 100644
index 27ebf22cf2d..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RedshiftTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2RedshiftTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2RedshiftTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config, "aws2-redshift-data");
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RekognitionIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RekognitionIT.java
index 1619fbee3b9..f6e8246c6a9 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RekognitionIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2RekognitionIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RekognitionTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RekognitionTest.java
deleted file mode 100644
index cbe224f8840..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2RekognitionTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2RekognitionTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2RekognitionTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3IT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3IT.java
index 1619fbee3b9..31f16ff2a61 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3IT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2S3IT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3Test.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3Test.java
deleted file mode 100644
index 24e6917f48c..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3Test.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2S3Test extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2S3Test.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3VectorsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3VectorsIT.java
index 1619fbee3b9..92594d70bf0 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3VectorsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2S3VectorsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3VectorsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3VectorsTest.java
deleted file mode 100644
index 74c61b4f51f..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2S3VectorsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2S3VectorsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2S3VectorsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SesIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SesIT.java
index 1619fbee3b9..a1cc4a0e88e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SesIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2SesIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SesTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SesTest.java
deleted file mode 100644
index bd8153ed54a..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SesTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2SesTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2SesTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SnsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SnsIT.java
index 1619fbee3b9..a3ad48f552b 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SnsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2SnsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SnsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SnsTest.java
deleted file mode 100644
index 8b58e65936d..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SnsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2SnsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2SnsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SqsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SqsIT.java
index 1619fbee3b9..5c6b1b637fc 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SqsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2SqsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SqsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SqsTest.java
deleted file mode 100644
index 900f80af338..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2SqsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2SqsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2SqsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StepFunctionsIT.java
similarity index 73%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StepFunctionsIT.java
index 1619fbee3b9..0a240516440 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StepFunctionsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2StepFunctionsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StepFunctionsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StepFunctionsTest.java
deleted file mode 100644
index f5bd2af0172..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StepFunctionsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2StepFunctionsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2StepFunctionsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StsIT.java
index 1619fbee3b9..d466fc01dc8 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2StsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StsTest.java
deleted file mode 100644
index cbf1da66f10..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2StsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2StsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2StsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TextractIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TextractIT.java
index 1619fbee3b9..647bbbaf7dd 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TextractIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2TextractIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TextractTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TextractTest.java
deleted file mode 100644
index 37c434d2db4..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TextractTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2TextractTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2TextractTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TimestreamIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TimestreamIT.java
index 1619fbee3b9..d5583fb95e4 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TimestreamIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2TimestreamIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TimestreamTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TimestreamTest.java
deleted file mode 100644
index 730d4fc898e..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TimestreamTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2TimestreamTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2TimestreamTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranscribeIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranscribeIT.java
index 1619fbee3b9..ff8dd05edb5 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranscribeIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2TranscribeIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranscribeTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranscribeTest.java
deleted file mode 100644
index 6667b598989..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranscribeTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2TranscribeTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2TranscribeTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranslateIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranslateIT.java
index 1619fbee3b9..f4f70812d82 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranslateIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAws2TranslateIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranslateTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranslateTest.java
deleted file mode 100644
index e3dcadb2269..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAws2TranslateTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAws2TranslateTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAws2TranslateTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsBedrockIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsBedrockIT.java
index 1619fbee3b9..3980b026771 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsBedrockIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAwsBedrockIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsBedrockTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsBedrockTest.java
deleted file mode 100644
index c6567b0d700..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsBedrockTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsBedrockTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsBedrockTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(createTestConfig(), "aws-bedrock");
-        this.runComponentTest(createTestConfig(), "aws-bedrock-agent");
-        this.runComponentTest(createTestConfig(), "aws-bedrock-agent-runtime");
-
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsCloudtrailIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsCloudtrailIT.java
index 1619fbee3b9..2481dfb0a8e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsCloudtrailIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAwsCloudtrailIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsCloudtrailTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsCloudtrailTest.java
deleted file mode 100644
index 4fdd473a947..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsCloudtrailTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsCloudtrailTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsCloudtrailTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsConfigIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsConfigIT.java
index 1619fbee3b9..46d46e7762d 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsConfigIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAwsConfigIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsConfigTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsConfigTest.java
deleted file mode 100644
index 9dfe7f74e22..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsConfigTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsConfigTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsConfigTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsParameterStoreIT.java
similarity index 73%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsParameterStoreIT.java
index 1619fbee3b9..5f57d4c2579 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsParameterStoreIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAwsParameterStoreIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsParameterStoreTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsParameterStoreTest.java
deleted file mode 100644
index 54c4ec86626..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsParameterStoreTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsParameterStoreTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsParameterStoreTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecretsManagerIT.java
similarity index 73%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecretsManagerIT.java
index 1619fbee3b9..9dd8c127cd8 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecretsManagerIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAwsSecretsManagerIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecretsManagerTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecretsManagerTest.java
deleted file mode 100644
index d3325720e4e..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecretsManagerTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsSecretsManagerTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsSecretsManagerTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecurityHubIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecurityHubIT.java
index 1619fbee3b9..a0d638c4c4e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecurityHubIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAwsSecurityHubIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecurityHubTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecurityHubTest.java
deleted file mode 100644
index 2b434e3f021..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsSecurityHubTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsSecurityHubTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsSecurityHubTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsXrayTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsXrayTest.java
deleted file mode 100644
index 5921d8b862b..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAwsXrayTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAwsXrayTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAwsXrayTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        // aws-xray is a tracer (other), not a component, so we only run unit tests
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureCosmosdbIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureCosmosdbIT.java
index 1619fbee3b9..8cd7b0f86b3 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureCosmosdbIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureCosmosdbIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureCosmosdbTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureCosmosdbTest.java
deleted file mode 100644
index 79d9d917505..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureCosmosdbTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureCosmosdbTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureCosmosdbTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventgridIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventgridIT.java
index 1619fbee3b9..3e3b06a94c5 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventgridIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureEventgridIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventgridTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventgridTest.java
deleted file mode 100644
index 3c20d849206..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventgridTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureEventgridTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureEventgridTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventhubsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventhubsIT.java
index 1619fbee3b9..b93265c4a36 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventhubsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureEventhubsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventhubsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventhubsTest.java
deleted file mode 100644
index 3133574da6d..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureEventhubsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureEventhubsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureEventhubsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFilesIT.java
similarity index 75%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFilesIT.java
index 1619fbee3b9..a11d83de0e9 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFilesIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureFilesIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent("azure-files");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFilesTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFilesTest.java
deleted file mode 100644
index 6b2f35da0f7..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFilesTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureFilesTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureFilesTest.class))
-                // arquillian fails, but the tests are ok
-                .build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config, "azure-files");
-
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFunctionsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFunctionsIT.java
index 1619fbee3b9..442c3a11d68 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureFunctionsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureFunctionsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent("azure-functions");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureKeyVaultIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureKeyVaultIT.java
index 1619fbee3b9..2e8fa1998da 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureKeyVaultIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureKeyVaultIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureKeyVaultTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureKeyVaultTest.java
deleted file mode 100644
index fa6259ae1c2..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureKeyVaultTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureKeyVaultTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureKeyVaultTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureServicebusIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureServicebusIT.java
index 1619fbee3b9..7d3878827c5 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureServicebusIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureServicebusIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureServicebusTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureServicebusTest.java
deleted file mode 100644
index 3a829b32de3..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureServicebusTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureServicebusTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureServicebusTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageBlobIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageBlobIT.java
index 1619fbee3b9..da37c7912aa 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageBlobIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureStorageBlobIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageBlobTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageBlobTest.java
deleted file mode 100644
index 6b267c206d8..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageBlobTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureStorageBlobTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureStorageBlobTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeIT.java
similarity index 73%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeIT.java
index 1619fbee3b9..95bb6c8028c 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureStorageDatalakeIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeTest.java
deleted file mode 100644
index b5e01fbd8d2..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureStorageDatalakeTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureStorageDatalakeTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageQueueIT.java
similarity index 73%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageQueueIT.java
index 1619fbee3b9..5009f83cb7c 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageQueueIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelAzureStorageQueueIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageQueueTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageQueueTest.java
deleted file mode 100644
index e4e0444d869..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageQueueTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelAzureStorageQueueTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelAzureStorageQueueTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBarcodeIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBarcodeIT.java
index 1619fbee3b9..d33e12a2462 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBarcodeIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBarcodeIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBarcodeTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBarcodeTest.java
deleted file mode 100644
index 6e8b11084d7..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBarcodeTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBarcodeTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBarcodeTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runDataformatTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBase64IT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBase64IT.java
index 1619fbee3b9..d5d3c647002 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBase64IT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBase64IT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBase64Test.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBase64Test.java
deleted file mode 100644
index 4d4346eb860..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBase64Test.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBase64Test extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBase64Test.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runDataformatTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanIT.java
index 1619fbee3b9..9e6bbad2807 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBeanIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanTest.java
deleted file mode 100644
index 62d906f6c2e..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBeanTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBeanTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanValidatorIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanValidatorIT.java
index 1619fbee3b9..f6837a7aa20 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanValidatorIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBeanValidatorIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanValidatorTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanValidatorTest.java
deleted file mode 100644
index 6f709fe605f..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanValidatorTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBeanValidatorTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBeanValidatorTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanioIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanioIT.java
index 1619fbee3b9..c019c1bd734 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanioIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBeanioIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanioTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanioTest.java
deleted file mode 100644
index ce47f661d98..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBeanioTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBeanioTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBeanioTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runDataformatTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBindyIT.java
similarity index 70%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBindyIT.java
index 1619fbee3b9..ee65cdfa1fb 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBindyIT.java
@@ -16,13 +16,15 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBindyIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat("bindyCsv");
+        assertDataFormat("bindyFixed");
+        assertDataFormat("bindyKvp");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBindyTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBindyTest.java
deleted file mode 100644
index 915565227d9..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBindyTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBindyTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBindyTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runDataformatTest(config, "bindyCsv");
-        this.runDataformatTest(config, "bindyFixed");
-        this.runDataformatTest(config, "bindyKvp");
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBonitaIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBonitaIT.java
index 1619fbee3b9..2e13737a00c 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBonitaIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBonitaIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBonitaTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBonitaTest.java
deleted file mode 100644
index 466394114b2..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBonitaTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBonitaTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBonitaTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoxIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoxIT.java
index 1619fbee3b9..2188f559b7e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoxIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBoxIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoxTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoxTest.java
deleted file mode 100644
index 226817681c1..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoxTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBoxTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBoxTest.class))
-                .unitTestExclusionPattern(".*IntegrationTest$").unitTestExpectedNumber(0).autostart(false) // needs
-                                                                                                           // configuration
-                .build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBraintreeIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBraintreeIT.java
index 1619fbee3b9..acb4939cb62 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBraintreeIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBraintreeIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBraintreeTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBraintreeTest.java
deleted file mode 100644
index 95ab66004b1..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBraintreeTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBraintreeTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBraintreeTest.class))
-                .unitTestExclusionPattern(".*IntegrationTest$").unitTestExpectedNumber(0).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBrowseIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBrowseIT.java
index 1619fbee3b9..d8214accf4e 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBrowseIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelBrowseIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBrowseTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBrowseTest.java
deleted file mode 100644
index 7dc671b654d..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBrowseTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelBrowseTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelBrowseTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCaffeineIT.java
similarity index 72%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCaffeineIT.java
index 1619fbee3b9..1bab7418635 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCaffeineIT.java
@@ -16,13 +16,14 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelCaffeineIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent("caffeine-cache");
+        assertComponent("caffeine-loadcache");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCaffeineTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCaffeineTest.java
deleted file mode 100644
index 1c3bb124e68..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCaffeineTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCaffeineTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCaffeineTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config, "caffeine-cache");
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCassandraqlIT.java
similarity index 75%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCassandraqlIT.java
index 1619fbee3b9..3513da6b51b 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCassandraqlIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelCassandraqlIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent("cql");
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCassandraqlTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCassandraqlTest.java
deleted file mode 100644
index 8e04e293da1..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCassandraqlTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCassandraqlTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCassandraqlTest.class)).unitTestExclusionPattern(
-                ".*(\\.integration\\..*|IntegrationTest$|CassandraComponentProducerTest$|CassandraComponentBeanRefTest$|CassandraComponentConsumerTest$)")
-                .build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config, "cql");
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCborIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCborIT.java
index 1619fbee3b9..71a23482eb0 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCborIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelCborIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void dataformatTest() {
+        assertDataFormat(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCborTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCborTest.java
deleted file mode 100644
index 5c5bec05678..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCborTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCborTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCborTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runDataformatTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChatscriptIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChatscriptIT.java
index 1619fbee3b9..6612f2f23aa 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChatscriptIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelChatscriptIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChatscriptTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChatscriptTest.java
deleted file mode 100644
index 184a36b04bd..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChatscriptTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelChatscriptTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelChatscriptTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChunkIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChunkIT.java
index 1619fbee3b9..5f1faf5c80a 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChunkIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelChunkIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChunkTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChunkTest.java
deleted file mode 100644
index 1e4f6f1a099..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelChunkTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelChunkTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelChunkTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelClickupIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelClickupIT.java
index 1619fbee3b9..c4c9b78a1b4 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelClickupIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelClickupIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelClickupTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelClickupTest.java
deleted file mode 100644
index 55d339a5fdb..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelClickupTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelClickupTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelClickupTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCloudeventsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCloudeventsTest.java
deleted file mode 100644
index 96d47a375de..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCloudeventsTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCloudeventsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCloudeventsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCmSmsIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCmSmsIT.java
index 1619fbee3b9..64dec21b822 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCmSmsIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelCmSmsIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCmSmsTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCmSmsTest.java
deleted file mode 100644
index c56b27c4094..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCmSmsTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCmSmsTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCmSmsTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCoapIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCoapIT.java
index 1619fbee3b9..49cf4feb8a6 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCoapIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelCoapIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCoapTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCoapTest.java
deleted file mode 100644
index 1555ff6aa5b..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCoapTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCoapTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCoapTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCometdIT.java
similarity index 74%
copy from tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
copy to tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCometdIT.java
index 1619fbee3b9..9cb79585cba 100644
--- a/tests/camel-itest-spring-boot/src/main/java/org/apache/camel/itest/springboot/Command.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCometdIT.java
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.itest.springboot;
 
-import java.util.concurrent.Future;
+import org.apache.camel.itest.springboot.common.AbstractSpringBootBaseTestSupport;
+import org.junit.jupiter.api.Test;
 
-/**
- * Represents a generic command that can be executed in the spring-boot context.
- */
-public interface Command {
-
-    Future<Object> execute(Object[] parameters) throws Exception;
+public class CamelCometdIT extends AbstractSpringBootBaseTestSupport {
 
+    @Test
+    void componentTest() {
+        assertComponent(inferComponentName(getClass()));
+    }
 }
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCometdTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCometdTest.java
deleted file mode 100644
index 9be82bd59c4..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCometdTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelCometdTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelCometdTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-}
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelConsoleTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelConsoleTest.java
deleted file mode 100644
index f217e214284..00000000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelConsoleTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit5.ArquillianExtension;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ArquillianExtension.class)
-public class CamelConsoleTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder().module(inferModuleName(CamelConsoleTest.class)).build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
... 29178 lines suppressed ...