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

如何在SpringBoottest中的@DataJpatest中导入配置类?

洪璞瑜
2023-03-14

我有一个 SpringBoot 应用程序,我有一个配置包

@Configuration
@EnableJpaAuditing
public class PersistenceConfig {
}

但是 PersistenceConfig 不会在 PersonRepositoryTest 中被拾取

@RunWith( SpringRunner.class )
@DataJpaTest
public class PersonRepositoryTest {

    // Tests ...
}

但是,如果我从< code>@DataJpaTest更改为@SpringBootTest,PersonRepositoryTest将获取配置。

我的包结构是

- main
    - java
        - config
              PersistenceConfig.java
        - domain
              Person.java
        - persistence
              PersonRepository.java
          Application.java // @SpringBootApplication

- test
    - java
        - persistence
              PersonRepositoryTest.java

Spring Boot 1.4 中的测试改进建议使用 @DataJpaTest

观察:在Test类上执行两个注释仍然不会导入配置@SpringBootTest@DataJpaTest

问题1:当用@DataJpaTest测试持久层时,我如何正确地(Spring Boot的最佳实践方式)将配置包导入到我的测试中?

问题2:围绕使用@SpringBootTest能成为可以接受的作品吗?我知道@DataJpaTest也是一个元注释,为我的数据库提供了合理的自动配置,包括事务管理。但是如果我不需要它呢?

共有3个答案

从烈
2023-03-14

在@georges van post之后,我发现所有配置类也可以通过在测试中添加一行来获取:

@RunWith( SpringRunner.class )
@DataJpaTest
@ComponentScan(basePackages = "com.basepackage.config")
public class PersonRepositoryTest {

    // Tests ...
}

如果有人只想要一个特定的配置类,您可以:

@RunWith( SpringRunner.class )
@DataJpaTest
@ContextConfiguration(classes=MyConfig.class)
public class PersonRepositoryTest {

    // Tests ...
}

或具有以下属性的多个类:

@Context配置(类={MyConfig1.class,MyConfig2.class})

晏经武
2023-03-14

你可以试试这个:用@ComponentScan注释 PersistenceConfig,以便在 Spring 中启用组件扫描。

@Configuration
@EnableJpaAuditing
@ComponentScan(basePackages = "com.yourbasepackage")
public class PersistenceConfig {
}

如果没有进一步的配置,@ComponentScan将默认扫描与PersistenceConfig类相同的包。

然后添加@Context Configuration注释,告诉它从PersistenceConfig.class加载其配置。

@RunWith( SpringRunner.class )
@DataJpaTest
@ContextConfiguration(classes=PersistenceConfig.class)
public class PersonRepositoryTest {

    // Tests ...
}
洪伟彦
2023-03-14

解决方案是使用< code>@Import将您的配置导入到< code>@DataJpaTest完成的配置中。这是我对< code>@Import的理解。

@RunWith(SpringRunner.class)
@DataJpaTest
@Import(AuditConfiguration.class)
public class AuditTest {
}

使用审计启用审计的配置

@Configuration
@EnableJpaAuditing
public class AuditConfiguration {
}
 类似资料:
  • 文件结构 Spring配置文件 将上下文初始化事件发送到类org的侦听器实例时发生异常。springframework。网状物上下文ContextLoaderListener组织。springframework。豆。工厂BeanInitializationException:无法加载属性;嵌套的异常是java。木卫一。FileNotFoundException:无法打开类PATH资源[WEB-IN

  • 我正在尝试测试一个JAX-RS应用程序,但我不想模拟数据,特别是因为现有的有一个方法 以下是我目前正在尝试的: 我得到以下错误 java.lang.IllegalStateException:配置错误:发现测试类[app.myResourceTest]的@bootstrapwith的多个声明:[@org.springframework.test.context.bootstrapwith(valu

  • 问题内容: 我有以下结构: 我可以在views.py,forms.py中使用 但是我不能在myFile.py中使用它 我加了 并且当我对其进行修改时,Flask Web服务器会重新启动,但是并没有说在重新启动后app / myFile.py中发现更改。 我需要做什么才能使用 在我的python文件中。我看不到form.py有什么特别的事情。 编辑:这是我的文件: 问题答案: 人们谈论Flask中的

  • 我使用Spring中的@datajpatest进行测试,然后在内存数据库中使用H2 as,如下所述。我也在使用Flyway进行生产。然而,一旦测试开始,FLyway就会启动并读取SQL文件。如何排除FlywayAutoConfiguration并保留其余部分,如spring文档中所述,以便让Hibernate在H2中为我创建表?

  • 问题内容: 我是一个完整的JSP初学者。我正在尝试在JSP页面中使用。使用除in中的类以外的其他类,我需要做什么? 问题答案: 使用以下导入语句导入: 顺便说一句,要导入多个类,请使用以下格式:

  • 问题内容: 我已经为EE开发人员安装了eclipse ide,并且收到了的导入错误 我右键单击项目文件夹->单击属性->单击Java构建路径->添加库-> JRE系统库, 但是显示的依赖项已经导入。如何导入javax.json包? 问题答案: 如果使用Maven,请将此依赖项添加到您的 对于Gradle,请将其添加到您的