Nevermind, I have the solution. My issue was a missing spring bean of type 'PropertySourcesPlaceholderConfigurer' that would then be able to use the property sources defined with the @TestPropertySource annotation.
The code change: Add ' PropertySourcesPlaceholderConfigurer.class' to @ContextConfiguration(classes = {...}): - @ContextConfiguration(classes = {ReproduceUnableToLoadProperties.ExampleRouteBuilder.class, ReproduceUnableToLoadProperties.ContextConfig.class}, loader = CamelSpringDelegatingTestContextLoader.class) + @ContextConfiguration(classes = {PropertySourcesPlaceholderConfigurer.class, ReproduceUnableToLoadProperties.ExampleRouteBuilder.class, ReproduceUnableToLoadProperties.ContextConfig.class}, loader = CamelSpringDelegatingTestContextLoader.class) Cheers Bede -----Original Message----- From: Bede Bignell <bede.bignell...@msd.govt.nz.INVALID> Sent: Wednesday, 16 December 2020 1:21 PM To: users@camel.apache.org Subject: WARNING: Suspicious Sender: WARNING: Suspicious Sender: camel-spring-javaconfig test issue Kia ora, I'm having an issue writing a camel-spring-javaconfig test of a camel route where the RouteBuilder bean relies on Spring to inject fields annotated with @Value. This repo: https://github.com/bedebignell/camel-bug-repro/ is able to reproduce the error by running 'mvn test -Dtest=nz.bignell.bede.camel.ReproduceUnableToLoadProperties' The project uses the BOM versions Camel 3.6.0 and Spring 5.1.15.RELEASE and the dependencies (pom here: https://github.com/bedebignell/camel-bug-repro/blob/main/pom.xml): * camel-core * camel-spring-javaconfig * camel-spring * spring-web // Testing deps * camel-test * camel-test-spring * spring-test The class extending RouteBuilder relies on Spring to inject to field with a value (@Value("${rankOfCamel}") int rankOfCamel). When the Spring @TestPropertySource hasn't been loaded/processed so the int property is attempted to be loaded with the literal string "${rankOfCamel}" which errors throwing a NumberFormatException. Here is the test class (class here: https://github.com/bedebignell/camel-bug-repro/blob/main/src/test/java/nz/bignell/bede/camel/ReproduceUnableToLoadProperties.java): package nz.bignell.bede.camel; import org.apache.camel.ExchangePattern; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration; import org.apache.camel.test.spring.CamelSpringDelegatingTestContextLoader; import org.apache.camel.test.spring.CamelSpringRunner; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; @RunWith(CamelSpringRunner.class) @ContextConfiguration(classes = {ReproduceUnableToLoadProperties.ExampleRouteBuilder.class, ReproduceUnableToLoadProperties.ContextConfig.class}, loader = CamelSpringDelegatingTestContextLoader.class) @TestPropertySource( properties = { "rankOfCamel=1" } ) public class ReproduceUnableToLoadProperties extends AbstractJUnit4SpringContextTests { @Autowired ProducerTemplate genericProducer; @Test public void checkProducer() { Assert.assertTrue(true); Assert.assertNotNull(genericProducer); Object resp = genericProducer.sendBody("direct:testA", ExchangePattern.InOut, "Klaus"); Assert.assertEquals("hi Klaus", resp); } @Component public static class ExampleRouteBuilder extends RouteBuilder { @Value("${rankOfCamel}") int rankOfCamel; @Override public void configure() throws Exception { from("direct:testA") .log("Camel is number: " + rankOfCamel) .setBody(constant("hi ").append(body().convertToString())) ; } } @Configuration public static class ContextConfig extends SingleRouteCamelConfiguration { ReproduceUnableToLoadProperties.ExampleRouteBuilder exampleRouteBuilder; // Constructor Injection of Spring bean 'ExampleRouteBuilder' ContextConfig(ReproduceUnableToLoadProperties.ExampleRouteBuilder exampleRouteBuilder) { this.exampleRouteBuilder = exampleRouteBuilder; } @Override @Bean public RouteBuilder route() { return exampleRouteBuilder; } } } Regards Bede ------------------------------- This email and any attachments may contain information that is confidential and subject to legal privilege. If you are not the intended recipient, any use, dissemination, distribution or duplication of this email and attachments is prohibited. If you have received this email in error please notify the author immediately and erase all copies of the email and attachments. The Ministry of Social Development accepts no responsibility for changes made to this message or attachments after transmission from the Ministry. ------------------------------- ------------------------------- This email and any attachments may contain information that is confidential and subject to legal privilege. If you are not the intended recipient, any use, dissemination, distribution or duplication of this email and attachments is prohibited. If you have received this email in error please notify the author immediately and erase all copies of the email and attachments. The Ministry of Social Development accepts no responsibility for changes made to this message or attachments after transmission from the Ministry. -------------------------------