我正在构建一个简单的电子商务应用程序来学习。我目前有 2 个 Maven 项目。OrderAPI 和 CouponAPI。我正在使用 Spring 5.3.2 和 JUnit 4.13.1。---没有 Spring Boot ---。我在 src/test/java 的 OrderAPI 项目中有 JUnit 测试,我使用 @RestController 进行测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyAppTestingSpringConfiguration.MyAppConfiguration.class)
@WebAppConfiguration
有用。OrderAPI 中的测试只调用同一个 Eclipse 项目中的端点。都好。在 CouponAPI 中,我有一个测试类,我想在调用 couponAPI 端点之前调用 OrderAPI 端点。问题是当 CouponAPI 中的 JUnit 测试运行时
MockMvcRequestBuilders.post("/api/v1/order/submit")
它返回 404,因为 Spring 控制器在 OrderAPI 项目中。这意味着即使我的测试框架使用与真正的 WebApp 完全相同的 @Configuration 类,Spring Test 也不会加载整个上下文。我这样做是为了使用真正的代码而不模拟任何东西。它有效!我还声明了 BasePackage 和所有内容。WebApp 本身可以很好地在服务器上运行。我只想编写一些 JUnit API 测试,但在这种情况下,我需要从 CouponAPI 测试类中调用 orderAPI 端点。你能帮忙吗?我可以进行跨项目 API 端点测试吗?
更新 我在带有测试的 CouponAPI pom.xml 中添加了 OrderAPI 作为 Maven 依赖项,它现在可以工作了。但我很好奇是否有更优雅的方式。也许通过一些 Spring 配置?我不喜欢一个 API 项目在技术上相互独立时依赖于另一个项目的事实。这是一种反模式,但这是我认为唯一可行的方法