首页 > 解决方案 > 如何使用junit测试基于kafka的父子项目

问题描述

子模块接收来自父卡夫卡生产者的请求。子模块只有 kafak 接收和发送功能。而父母从 rest api 获得请求,然后它产生给孩子的 kafka 侦听器。

我想为上述项目结构编写集成测试用例。我想测试整个应用程序,即接收其余的 api 调用,然后将请求转发到子模块并发送回响应。

这是项目结构

在此处输入图像描述

这是初始请求所在的 api 控制器:

@Controller
@RequestMapping(value = "/api")
public class ApiController {

@Autowired
KafkaTemplate<String, String> kafkaTemple;

@RequestMapping(value={"/welcome"}, method = RequestMethod.POST)
@ResponseBody
public PojoClass welcomeUser(@RequestBody String request) {

    // TODO Prepares request to JSON format and forward towards child module
    kafkaTemple.send("ChildTopic", request);

    return new PojoClass("Test","Test Message String");
  }
}

儿童 kafka 接收器和生产者

@Component
@EnableKafka
public class KafkaReceiver extends config {

@Autowired
KafkaTemplate<String, String> kafkaTemple;

private static final String kafkaTopic = "ChildTopic";

@KafkaListener(topics = kafkaTopic)
public void listen(List<ConsumerRecord<String, String>> records) {

    // TODO Some parsing and validation

    System.out.println("Received request: " + records);
    kafkaTemple.send("ParentTopic", records + " :Response-true");

  }
}

这是父卡夫卡接收器

@Component
@EnableKafka
public class ParentKafkaReceiver extends config {

private static final String kafkaTopic = "ParentTopic";

@KafkaListener(topics = kafkaTopic)
public void listen(List<ConsumerRecord<String, String>> records) {

    System.out.println("Final result string: " + records);
  }
}

我应该在哪里以及如何编写测试用例?即在父模块或子模块中

标签: javaspring-bootjunitapache-kafka

解决方案


推荐阅读