【发布时间】:2019-07-11 18:27:10
【问题描述】:
我对 Spring 框架和运行在 http://localhost:8080 的我的 JAVA 应用程序(比如 Project_A)非常陌生,它会处理并将处理后的内容转发到另一个应用程序(比如 Project_B)正在运行的 http://localhost:9090。 Project_B 回复 Project_A,然后 Project_A 将内容转发到外部。
我现在正在尝试为 Project_A 编写集成测试,因此需要两个模拟,一个在请求端,另一个在 Project_B 端。对于请求,我可以利用 MockMVC 来模拟请求和发送。但是为了模拟 Project_B,我正在考虑创建一个模拟控制器,它接收来自 Project_A 的请求并相应地发送回复。因此,为此,我需要创建另一个在不同端口中运行的控制器。 project_A 中的默认端口是 8080,在我的新控制器模拟中我需要使用 9090。
有没有办法在一个 spring junit 应用程序中使用两个不同的端口?或者有什么更好的方式通过弹簧单元测试本身来实现它?
【问题讨论】:
-
您是要进行模拟测试还是实际集成测试? Project_A 和 Project_B 通过其他方式进行通信?
-
是的 project_A 和 Project_B 是完全不同的实体,它们通过 REST 进行通信。
-
我的第一个问题呢:你是在做模拟测试用例还是实际集成测试用例?
-
实际集成测试。我遵循了这个spring.io/guides/gs/testing-web 并生成了向我的控制器发送请求的测试用例。但是对于另一端 Project_B ,我不确定在这种情况下如何处理。
-
您已经通过 REST 将 Project_A 与 Project_B 通信。然后您可以创建 TestRestTemplate 对象并向 Project_B 发送请求并验证响应。
标签: spring spring-boot spring-mvc integration-testing spring-test-mvc