SpringBoot Junit测试RestControllers

时间:2018-08-08 16:09:37

标签: spring testing junit spring-restcontroller

我需要知道在单元测试中仅测试spring boot应用程序中的restControllers是否足够或者更好地独立测试所有类?

2 个答案:

答案 0 :(得分:0)

没有简单而正确的答案。您应该自己决定。

首先值得一提的两件事:

  • 用于测试控制器的框架:Spring MockMvc framework,用于Spring Web应用程序的集成测试。它可以测试单个控制器(带有模拟服务层)和整个应用程序(包括带有嵌入式数据库的服务和数据库层)。
  • 回答您应该进行哪些测试的文章:Test pyramid conception(简而言之,您应该有很多单元测试和一些集成测试)。

我个人的喜好是通过集成测试(覆盖服务和数据库层)覆盖“幸福之路”。

然后,我将通过单元测试介绍具有复杂逻辑的类(并非所有类)。

在我的实践中,大多数应用程序都非常简单,我发现我有很多集成测试,而单元测试却很少。

答案 1 :(得分:0)

Max Fariskov是正确的,我可以补充两句话。

  1. 单元测试在您经常启动时正常工作。后 每个编译通常足够了:)。这就是为什么每个单元测试都必须占用部分功能的原因。测试整个控制器是一项过于复杂的任务。

    • 将业务逻辑与控制器分离,
    • 将其投入使用,
    • 具有自己的单元测试的测试服务
    • 控制器中的模拟服务功能-仅测试和检查 控制器行为。
  2. 单元测试速度很快,但是集成测试则复杂而复杂。因此,将它们分成不同的组是一个好主意。经常执行单元测试,仅在必要时执行集成测试。

我正在使用“个人资料”:

  • 创建两个空接口。例如:

    公共接口UnitTest {} 公共接口IntegrationTest {}

  • 用适当的注释标记测试类

    @Category({IntegrationTest.class}) 公共类MySlowAndComplexServiceTest {}

    @Category({UnitTest.class}) 公共类MyFastServiceTest {}

    • 在您的.pom中创建两个配置文件

        单元测试              真正                                                 Maven-surefire-插件                 2.19.1                                      UnitTest.class                                                 整合测试              假                                                 Maven-surefire-插件                 2.19.1                                      IntegrationTest.class,UnitTest.class                                            

完成了。 默认情况下,您的单元测试将被执行,并且您可以随时打开“ integrationTests”配置文件来激活您的集成测试。