Spring Boot Junit 测试 Rest 控制器
SpringBoot Junit Testing RestControllers
我需要知道在 spring 启动应用程序中仅测试 restControllers 是否足以进行单元测试或更好地独立测试所有 类?
没有简单的 'right' 答案。你应该自己决定。
首先值得一提的是两件事:
- 用于测试控制器的框架:Spring MockMvc framework,用于 Spring 网络应用程序的集成测试。它可以测试单个控制器(带有模拟服务层)和整个应用程序(包括服务和数据库层,带有嵌入式数据库)。
- 回答您应该进行哪些测试的文章:Test pyramid conception(简而言之,您应该进行大量的单元测试和少量的集成测试)。
我个人的偏好是通过集成测试(涵盖服务和数据库层)覆盖 'happy path'。
然后我用复杂的逻辑(不是所有类)覆盖单元测试类。
在我的实践中,大多数应用程序都非常简单,而且我发现我有很多集成测试而没有那么多单元测试。
Max Fariskov 说得对,我可以补充两点。
当您经常启动单元测试时,它们会正常工作。后
每次编译通常就足够了:)。这就是为什么每个单元测试都必须检查功能的一小部分。测试整个控制器是一项过于复杂的任务。
- 将业务逻辑与控制器分离,
- 投入使用,
- 用自己的单元测试测试服务
- 控制器中的模拟服务功能 - 仅测试和检查
控制器行为。
单元测试很快,但集成测试又慢又复杂。因此,将它们分成不同的组是个好主意。经常执行单元测试,只有在必要时才执行集成测试。
我用 "profiles":
创建两个空接口。例如:
public 接口单元测试 {}
public 接口集成测试 {}
用正确的注释标记你的测试classes
@类别({IntegrationTest.class})
public class MySlowAndComplexServiceTest {}
@类别({UnitTest.class})
public class MyFastServiceTest {}
- 在你的 .pom 中创建两个配置文件
单元测试
真的
maven-surefire-插件
2.19.1
UnitTest.class
集成测试
错误的
maven-surefire-插件
2.19.1
IntegrationTest.class,UnitTest.class
完成了。
您的单元测试将默认执行,您可以随时打开 "integrationTests" 配置文件以激活您的集成测试。
我需要知道在 spring 启动应用程序中仅测试 restControllers 是否足以进行单元测试或更好地独立测试所有 类?
没有简单的 'right' 答案。你应该自己决定。
首先值得一提的是两件事:
- 用于测试控制器的框架:Spring MockMvc framework,用于 Spring 网络应用程序的集成测试。它可以测试单个控制器(带有模拟服务层)和整个应用程序(包括服务和数据库层,带有嵌入式数据库)。
- 回答您应该进行哪些测试的文章:Test pyramid conception(简而言之,您应该进行大量的单元测试和少量的集成测试)。
我个人的偏好是通过集成测试(涵盖服务和数据库层)覆盖 'happy path'。
然后我用复杂的逻辑(不是所有类)覆盖单元测试类。
在我的实践中,大多数应用程序都非常简单,而且我发现我有很多集成测试而没有那么多单元测试。
Max Fariskov 说得对,我可以补充两点。
当您经常启动单元测试时,它们会正常工作。后 每次编译通常就足够了:)。这就是为什么每个单元测试都必须检查功能的一小部分。测试整个控制器是一项过于复杂的任务。
- 将业务逻辑与控制器分离,
- 投入使用,
- 用自己的单元测试测试服务
- 控制器中的模拟服务功能 - 仅测试和检查 控制器行为。
单元测试很快,但集成测试又慢又复杂。因此,将它们分成不同的组是个好主意。经常执行单元测试,只有在必要时才执行集成测试。
我用 "profiles":
创建两个空接口。例如:
public 接口单元测试 {} public 接口集成测试 {}
用正确的注释标记你的测试classes
@类别({IntegrationTest.class}) public class MySlowAndComplexServiceTest {}
@类别({UnitTest.class}) public class MyFastServiceTest {}
- 在你的 .pom 中创建两个配置文件
单元测试 真的 maven-surefire-插件 2.19.1 UnitTest.class 集成测试 错误的 maven-surefire-插件 2.19.1 IntegrationTest.class,UnitTest.class
完成了。 您的单元测试将默认执行,您可以随时打开 "integrationTests" 配置文件以激活您的集成测试。