Java maven结构内的验收测试?
我的问题是关于基于docker的验收测试的目录位置 我的项目是一个基于SpringBoot的命令行应用程序,它从表中提取数据并构建电子表格。它有单元测试和基于JUnit的验收测试。验收测试的JUnit runner是标准的JUnit runner,而不是基于Spring的runner 最后,我有一个验收测试结构,它针对专门为每个测试创建的专用DB2实例测试Docker组件。此时,有一个docker compose文件:Java maven结构内的验收测试?,java,spring-boot,junit,Java,Spring Boot,Junit,我的问题是关于基于docker的验收测试的目录位置 我的项目是一个基于SpringBoot的命令行应用程序,它从表中提取数据并构建电子表格。它有单元测试和基于JUnit的验收测试。验收测试的JUnit runner是标准的JUnit runner,而不是基于Spring的runner 最后,我有一个验收测试结构,它针对专门为每个测试创建的专用DB2实例测试Docker组件。此时,有一个docker compose文件: 为该测试专门启动DB2容器实例 启动Flyway迁移容器以加载测试数据 启
- 为该测试专门启动DB2容器实例
- 启动Flyway迁移容器以加载测试数据
- 启动执行上述Spring引导命令行应用程序的容器
单独的文件夹确实有助于运行和取消耦合不同的测试。有很多方法可以做到这一点。一般来说,maven有两个插件:surefire和failsafe。它们在配置方面非常相似,但是surefire主要用于运行单元测试,而failsafe则用于集成测试 因此,首先,您可能希望使用故障保护插件配置验收测试。你将:
- 在不同的构建阶段运行它们(至少在单元测试运行之后)
- 如果您的构建被破坏,并且一些单元测试没有成功,您甚至不想运行验收/故障保护测试-这可能会节省一些构建时间
- 您将获得不同的集成和单元测试报告(从技术上讲,这些插件创建不同的报告文件夹
和surefire reports
)failsafe reports
- 仅仅依靠命名约定。这些插件寻找不同名称的测试,例如:
将与surefire一起运行,而SampleTest.class
将与filesafe插件一起运行。当然,它在pom文件中的plugibs配置级别上都是可定制的。 通常,在概念上,单元测试需要与实际类放在同一个包中。例如:如果您在SampleTestIT.class
中有一个类com.myorg.Foo.java
,那么您将它放在Foo
中,相应的单元测试将在src/main/java/com/myorg/Foo.java
中。因为集成测试通常不是这样,所以您可以简单地创建一个文件夹src/main/java/com/myorg/FooTest.java
或其他东西,并使用不同的插件自动运行它们,同样,因为您将以不同的方式命名测试it
src/test/java
和src/test/resources
,在它旁边,您可以看到类似src/it/java
和src/it/resources
的内容。也许你仍然想使用surefire和failsafe插件,正如我上面所描述的。您仍将在同一maven生命周期中运行这两种类型的测试
最“激进”的方法是将验收测试分离到不同的maven模块。这将使您能够在不同的构建步骤中分别运行带有验收测试的模块。例如,这在CI工具中可能很方便。当然,您可以通过属性或maven配置文件实现类似的效果。有很多方法可以实现这一点。一般来说,maven有两个插件:surefire和failsafe。它们在配置方面非常相似,但是surefire主要用于运行单元测试,而failsafe则用于集成测试 因此,首先,您可能希望使用故障保护插件配置验收测试。你将:
- 在不同的构建阶段运行它们(至少在单元测试运行之后)
- 如果您的构建被破坏,并且一些单元测试没有成功,您甚至不想运行验收/故障保护测试-这可能会节省一些构建时间
- 您将获得不同的集成和单元测试报告(从技术上讲,这些插件创建不同的报告文件夹
和surefire reports
)failsafe reports
- 仅仅依靠命名约定。这些插件寻找不同名称的测试,例如:
将与surefire一起运行,而SampleTest.class
将与filesafe插件一起运行。当然,它在pom文件中的plugibs配置级别上都是可定制的。 通常,在概念上,单元测试需要与实际类放在同一个包中。例如:如果您在SampleTestIT.class
中有一个类com.myorg.Foo.java
,那么您将它放在Foo
中,相应的单元测试将在src/main/java/com/myorg/Foo.java
中。因为集成测试通常不是这样,所以您可以简单地创建一个文件夹src/main/java/com/myorg/FooTest.java
或其他什么,并使用it