Spring Data Rest 不能做集成测试?
Posted
技术标签:
【中文标题】Spring Data Rest 不能做集成测试?【英文标题】:Spring Data Rest cannot do Integration test? 【发布时间】:2020-04-04 07:01:27 【问题描述】:我尝试过同时使用 MockMVC 和 TestRestTemplate。在这两种情况下,返回的响应都是 404,但 API 端点在集成测试之外工作(当我自己运行 spring 应用程序时)。
是否有人有一个有效的示例应用程序,该应用程序对使用 Spring Data Rest 的生成的控制器进行了有效的集成测试?
我还能够针对我自己的控制器(非 SDR 类型)编写常规集成测试
测试代码:
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyTest
@Autowired
private TestRestTemplate testRestTemplate;
@Test
public void testApi()
String settings = testRestTemplate
.getForObject("/api/v1/orders", String.class);
System.out.println(settings);
回购:
@RepositoryRestResource(excerptProjection = OrderSummaryProjection.class)
public interface OrderRepository extends JpaRepository<Order, Long>
好的,我发现了问题,但我不知道答案应该是什么:
我在 application.properties 中设置了 spring.data.rest.basePath。
但我认为在您运行集成测试时不会读取该文件。我该如何解决?
【问题讨论】:
您的代码 sn-p 将有助于回答问题 @Smile 找到了问题,但没有答案,请参阅编辑 【参考方案1】:我目前不测试 Spring Data Rest 端点,但如果我要这样做,我会使用经典的集成测试方法测试接口:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DummyIT
@Autowired
private SettingsRepository settingsRepository;
@Test
public void testApi()
List<Settings> settings = settingsRepository.findAll();
assertNotNull(settings);
我还测试了端到端测试,它也有效,它只是返回丑陋的 "_embedded" : "settings" : [ ... ] , ... 所以它是可行的,但它是不漂亮:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DummyTest
@Autowired
private TestRestTemplate testRestTemplate;
@Test
public void testApi()
String settings = testRestTemplate
.getForObject("/api/settings", String.class);
System.out.println(settings);
【讨论】:
我找到了问题,但没有答案,请参阅编辑以上是关于Spring Data Rest 不能做集成测试?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data REST API集成SpringfoxSwagger
Spring Data REST 的 QueryDSL 集成,用于查询实体中集合映射的子属性
Spring Data REST 的 QueryDSL 集成可以用来执行更复杂的查询吗?
如何测试 Spring Data Rest @RepositoryRestResource?
Java - Spring boot - 集成测试 - TestEntityManager 没有被注入
在 SpringBoot 中使用 Testcontainers 进行 Spring Data Elasticsearch 集成测试