I'm new to spring-boot, currently trying to develop a kafka producer I want to test method that use value define in properties file. but it show value is null how solve this.I have added my property files to separate resource file in test folder also this is my folder structure
@SpringBootTest
public class KafkaProducerImplTest {
@BeforeEach
void setUp() {
}
@Test
void check() {
KafkaProducerImpl kpi = new KafkaProducerImpl();
kpi.check();
}
}
@Service
public class KafkaProducerImpl implements KafkaProducerInterface
{
@Value("${kafka.brokers.local}")
private String kafkaBrokers;
@Value("${schema-registry}")
private String schemaRegistry;
private Properties config()
{
Properties props = new Properties();
props.setProperty("bootstrap.servers",kafkaBrokers);
props.setProperty("acks", "1");
props.setProperty("reties", "10");
props.setProperty("key.serializer", StringSerializer.class.getName());
props.setProperty("value.serializer",Serializer.class.getName());
props.setProperty("schema.registry.url",schemaRegistry);
return props;
}
public <K,T>KafkaProducer<K,T> getProducer()
{
return new KafkaProducer<>(config());
}
public <T>ProducerRecord createRecord(String Topic,T msg)
{
return new ProducerRecord<>(
Topic,msg
);
}
public void sendMessage(KafkaProducer producer,ProducerRecord record)
{
producer.send(record, (recordMetadata, e) -> {
if (e == null){
System.out.println("success");
}
});
producer.flush();
}
public void closeProducer(KafkaProducer producer){
producer.close();
}
public void check(){
System.out.println(schemaRegistry);
}
}
KafkaProducerImplinstance.KafkaProducerInterfaceinstead of theImpland your test needs@RunWith(SpringRunner.class).