1、问题:
单元测试,无法注入,注入时为null
2、解决方案:
单元测试类前加:
@RunWith(SpringRunner.class)
@SpringBootTest
3、完整代码:
MessageProducerTest.java
import com.chargedot.server.producerdemo.message.MessageProducer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MessageProducerTest {
@Autowired
private MessageProducer messageProducer;
@Test
public void send() throws Exception {
messageProducer.getClass();
}
}
MessageProducer .java
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.Future;
/**
* @author yanghao
* @Description:
* @date 2018/11/1 20:42
*/
@Component
public class MessageProducer {
private Logger LOG = LoggerFactory.getLogger(MessageProducer.class);
@Autowired
private KafkaTemplate kafkaTemplate;
/**
* singleton instance
*/
private static MessageProducer instance = null;
/**
* get instance
*
* @return instance
*/
public static MessageProducer getInstance() {
if (instance == null) {
instance = new MessageProducer();
}
return instance;
}
public void print() {
System.out.println("注入成功.....");
}
public Future<RecordMetadata> send(String topic, String key, String message) {
ProducerRecord<String, String> record = new ProducerRecord<String, String>(topic, key, message);
Future<RecordMetadata> result = kafkaTemplate.send(topic, key, message);
return result;
}
}