我正在尝试为Spring Boot 2应用程序编写集成测试。
一个测试应该测试通过REST更新值。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureTestEntityManager
@Transactional
public class TenantEndpointIT {
@Autowired
private TestRestTemplate template;
@Autowired
private TestEntityManager entityManager;
@Test
public void nok_updateValueForbidden() {
}
}
现在,我认为最干净的方法是在@Before方法中使用TestEntityManager
创建值,然后在实际测试中测试REST端点。
但是 REST端点调用的服务使用Spring Caching注释进行注释。所以如果我这样做,测试就会失败。我可以直接使用该服务或进行第二次REST调用。这会导致使用相同值的其他测试出现问题,因为即使数据库被回滚,缓存似乎也包含该值。 (现在我正在使用@DirtiesContext)。
我的问题是,您如何正确地将测试服务与@Cachable集成? 有没有办法获得缓存并明确地放/删? 我尝试自动装配一个CacheManager,但它找不到一个并失败。
答案 0 :(得分:4)
如果您在测试中添加@AutoConfigureCache
,它将覆盖您在应用中通过CacheManager
noops定义的缓存策略。如果你想确保缓存不会干扰你的测试,这非常有用。