Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven结构内的验收测试?_Java_Spring Boot_Junit - Fatal编程技术网

Java maven结构内的验收测试?

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迁移容器以加载测试数据 启

我的问题是关于基于docker的验收测试的目录位置

我的项目是一个基于SpringBoot的命令行应用程序,它从表中提取数据并构建电子表格。它有单元测试和基于JUnit的验收测试。验收测试的JUnit runner是标准的JUnit runner,而不是基于Spring的runner

最后,我有一个验收测试结构,它针对专门为每个测试创建的专用DB2实例测试Docker组件。此时,有一个docker compose文件:

  • 为该测试专门启动DB2容器实例
  • 启动Flyway迁移容器以加载测试数据
  • 启动执行上述Spring引导命令行应用程序的容器
docker compose结束后,将与生成的电子表格和预期文件进行比较。如果它们是逐字节等效的,则认为测试通过

鉴于上面的验收测试是大量docker测试,并且Java端删除了一些步骤,是否仍适合将此测试置于/src/test/acceptance下?

如中所述 最好有单独的测试目录。我建议把所有的测试都放在测试之下,并有一个单独的文件夹,test/acceptance/docker test或者别的什么,但总的来说这取决于你。 单独的文件夹有助于运行和取消耦合不同的测试。

如中所述 最好有单独的测试目录。我建议把所有的测试都放在测试之下,并有一个单独的文件夹,test/acceptance/docker test或者别的什么,但总的来说这取决于你。
单独的文件夹确实有助于运行和取消耦合不同的测试。

有很多方法可以做到这一点。一般来说,maven有两个插件:surefire和failsafe。它们在配置方面非常相似,但是surefire主要用于运行单元测试,而failsafe则用于集成测试

因此,首先,您可能希望使用故障保护插件配置验收测试。你将:

  • 在不同的构建阶段运行它们(至少在单元测试运行之后)
  • 如果您的构建被破坏,并且一些单元测试没有成功,您甚至不想运行验收/故障保护测试-这可能会节省一些构建时间
  • 您将获得不同的集成和单元测试报告(从技术上讲,这些插件创建不同的报告文件夹
    surefire reports
    failsafe reports
现在要物理分离测试,您可以:

  • 仅仅依靠命名约定。这些插件寻找不同名称的测试,例如:
    SampleTest.class
    将与surefire一起运行,而
    SampleTestIT.class
    将与filesafe插件一起运行。当然,它在pom文件中的plugibs配置级别上都是可定制的。 通常,在概念上,单元测试需要与实际类放在同一个包中。例如:如果您在
    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
现在要物理分离测试,您可以:

  • 仅仅依靠命名约定。这些插件寻找不同名称的测试,例如:
    SampleTest.class
    将与surefire一起运行,而
    SampleTestIT.class
    将与filesafe插件一起运行。当然,它在pom文件中的plugibs配置级别上都是可定制的。 通常,在概念上,单元测试需要与实际类放在同一个包中。例如:如果您在
    com.myorg.Foo.java
    中有一个类
    Foo
    ,那么您将它放在
    src/main/java/com/myorg/Foo.java
    中,相应的单元测试将在
    src/main/java/com/myorg/FooTest.java
    中。因为集成测试通常不是这样,所以您可以简单地创建一个文件夹
    it
    或其他什么,并使用