java - spring如何使用一个web环境进行多个测试

标签 java spring spring-test

我有多个具有多个路径的 REST API。我目前正在使用 spring 的 Web 环境来设置 http 服务器,并使用 junit 测试这些 API。所以我使用一个包含以下注释的类并注入(inject)端口:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@ActiveProfiles(ConfigConstants.PROFILE_LOCAL)
public abstract class TestBase{

    @Autowired
    protected TestRestTemplate restTemplate;

    @LocalServerPort
    public int httpPort;

    ...
}

我的测试类继承了Testbase.class并使用相同的端口。

设置:

  • 测试库
  • A 类扩展了 TestBase
  • B 类扩展了 TestBase
  • ...

在日志中我可以看到不止一个 Spring Server,因为 Spring ASCI Logo 多次出现。

有没有办法启动一次 WebEnvironment 并将其共享给我的所有测试?

问候 蒙蒂

最佳答案

Is there a way to start the WebEnvironment once and share those to all of my tests?

假设您没有在子类中提供更改上下文缓存键的额外配置,那么这种情况会自动发生。

详情可见Context Caching Spring 引用手册的部分。

问候,

Sam(Spring TestContext 框架的作者)

关于java - spring如何使用一个web环境进行多个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47556152/

相关文章:

java - sb 无法解析为变量

java - 在 Java 中任务完成之前后台任务然后结束连接(8)

java - 每当我说@Transactional 时,回滚每个检查的异常

Spring 5 :optional injection points using @Nullable

spring-test - 具有多个数据源的 spring @sqlgroup

java - 当没有指定显式参数时,进程是否会分配足够的堆?

java - 如何在 JPA 关系中设置被视为 NULL 的值

spring - 将 ffmpeg 与 Spring Boot 集成

java - 如何解决 Spring Controller 测试用例中的 NoSuchMethodError?

spring-boot - 如何在 Spring Boot 测试中模拟 BindingResult