当前位置: 首页 > 知识库问答 >
问题:

spring-用于集成测试的启动默认配置文件

糜淇
2023-03-14

spring-引导利用spring配置文件(http://docs.Spring.io/Spring-boot/docs/current/reference/html/boot-features-profiles.html),例如,它允许为不同环境提供单独配置。我使用这个特性的一种方法是配置测试数据库以供集成测试使用。然而,我想知道是否有必要创建我自己的配置文件'test',并在每个测试文件中显式地激活这个配置文件?现在我用以下方式来做:

>

  • 在src/main/resources内部创建application-test.properties
  • 在那里编写特定于测试的配置(目前仅为数据库名称)
  • 在每个测试文件中包括:

    @ActiveProfiles("test")
    

    有没有更聪明/更简洁的方法?例如默认的测试配置文件?

    编辑1:此问题与spring-引导1.4.1有关

  • 共有2个答案

    李星波
    2023-03-14

    另一种方法是定义一个基础(抽象)测试类,您的实际测试类将对其进行扩展:

    @RunWith(SpringRunner.class)
    @SpringBootTest()
    @ActiveProfiles("staging")
    public abstract class BaseIntegrationTest {
    }
    

    混凝土试验:

    public class SampleSearchServiceTest extends BaseIntegrationTest{
    
        @Inject
        private SampleSearchService service;
    
        @Test
        public void shouldInjectService(){
            assertThat(this.service).isNotNull();
        }
    } 
    

    这允许您提取的不仅仅是@activeprofiles注释。您还可以设想为不同类型的集成测试(例如数据访问层与服务层)或功能特性(常见的@before@after方法等)提供更专门的基本类。

    赵晟睿
    2023-03-14

    据我所知,没有什么能直接回应你的要求--但我可以提出一个建议,对你有帮助:

    您可以使用自己的测试注释,它是一个包含@springboottest@activeprofiles(“test”)的元注释。因此,您仍然需要专用的概要文件,但要避免将概要文件定义分散到所有测试中。

    此注释将默认为配置文件test,您可以使用元注释重写配置文件。

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @SpringBootTest
    @ActiveProfiles
    public @interface MyApplicationTest {
      @AliasFor(annotation = ActiveProfiles.class, attribute = "profiles") String[] activeProfiles() default {"test"};
    }
    
     类似资料:
    • 问题内容: Spring-boot利用了Spring配置文件(http://docs.spring.io/spring- boot/docs/current/reference/html/boot-features- profiles.html ),这些配置文件例如允许针对不同的环境进行单独的配置。我使用此功能的一种方法是配置要由集成测试使用的测试数据库。但是我想知道是否有必要创建自己的配置文件“

    • 我试图为一个Spring引导项目写一个集成测试。不幸的是,我对实现感到困惑。 下面是已尝试的示例代码段 问题 我是否需要一个单独的,带有注释以支持集成测试

    • 我正在测试我的spring boot应用程序。我正在做集成测试,但由于url返回的响应无法jsonfied,测试一直失败。请帮忙。以下是测试功能: 错误:

    • 我有一个Spring Boot集成测试,其类定义如下。 我得到以下例外: 我的TestApplication类定义如下: properties-context.xml定义如下: 这从一个名为external.properties.的文件中读取,在我的外部属性文件中设置了属性'spring.main.allow-Bean-定义-覆盖=true'。我添加此项是因为当我运行应用程序时,出现了相同的异常,

    • 未能配置Spring Boot进行集成测试。冷你请看一下下面的代码: 实体 存储 库 测试配置 应用程序属性 测试用例 我尝试了不同的配置(其最新版本),但一直出现相同的异常: 更奇怪的是,异常的本质是让spring boot根据实体注释自动生成模式。因此,在插入的时候,spring必须创建表,但是看起来它并没有创建。如果有人给我一个想法,我做错了什么,或者如果有人已经面临这样的问题-请让我知道。

    • 我有一些问题。 允许在集成测试类中自动拥有控制器? 如何为这个控制器创建bean. 我有配置问题:help: