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

在spring boot中的H2中加载初始测试数据

慕容光启
2023-03-14
spring:
  datasource:
    url: jdbc:h2:mem:test;
    driverClassName: org.h2.Driver
    username: sa
    password: 
  jpa:
    database: h2
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: create
      naming.physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    properties: 
      hibernate:
        show_sql: true
        format_sql: false

schema.sql

CREATE SCHEMA AB AUTHORIZATION SA;

abcControllerTest.java

@RunWith(SpringRunner.class)
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
@SpringBootTest(classes = WebApp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
@ActiveProfiles("test")
public class AbcControllerTest {

  @Autowired
  private MockMvc mockMvc;

  @Autowired
  private LeDataService leDataService;

  @Before
  public void setup() {
    MyInfo myInfo = new MyInfo();
    ..............
    ..............
    leDataService.save(myInfo);
  }

  @Test
  public void getAbcTest() throws Exception {
    mockMvc.perform(MockMvcRequestBuilders.get("/api/v1/Abcs/1234567/12345678")
        .with(SecurityMockMvcRequestPostProcessors.user("test").password("test123"))
        .with(SecurityMockMvcRequestPostProcessors.csrf()))
        .andExpect(status().isOk())
  }

}

共有1个答案

高森
2023-03-14

创建用@component@profile({“dev”,“test”})注释的新类,该类实现CommandLineRunner然后注入依赖项

使用CommandLineRunner附带的初始数据重写run()方法

例如:

    @Component 
    @Profile({ "dev", "test" })
    setupInitialData implements CommandLineRunner {

    UserService userService;

    //bla bla

    @Override
    @Transactional
    public void run(String... args) {
       User user = new User;
       user.setName("test");
       userService.save(user);

       //bla bla
    }

 }
 类似资料:
  • 我试图使用Junit5为特定的服务类创建单元/集成测试,以避免整个项目过载。 测试类: 错误: 2019-04-03 14:56:06.146警告732---[main]O.S.W.C.S.GenericWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependency

  • 问题内容: 我想知道在应用程序启动之前加载初始数据库数据的最佳方法是什么?我正在寻找的东西将用数据填充我的H2数据库。 例如,我有一个域模型“ User”,我可以通过转到/ users来访问用户,但是最初数据库中没有任何用户,所以我必须创建它们。无论如何,是否有自动用数据填充数据库的信息? 目前,我有一个由容器实例化并为我创建用户的Bean。 例: 但是我非常怀疑这是最好的方法。还是? 问题答案:

  • 我想知道在应用程序启动之前加载初始数据库数据的最佳方法是什么?我正在寻找的是一些东西,将填补我的H2数据库与数据。 例如,我有一个域模型“user”我可以通过转到/users来访问用户,但最初数据库中没有任何用户,所以我必须创建它们。是否存在自动填充数据库的数据? 但我很怀疑这是最好的方法。还是真的?

  • 是否可以使用或任何其他文件在数据库中加载初始数据? 我知道用于数据库,而是数据库。但只是想知道数据库的是否有任何等价物。 在谷歌搜索时,我发现了这个SO链接(Spring Boot加载初始数据),它完成了我所要查找的内容,但它仍然不是一个独立的文件。

  • 我正在用Cucumber编写验收测试,我想使用H2数据库进行测试。 应用程序测试属性如下所示: 在目录resources/db/migration中,我有一个包含这些脚本的sql文件: 但是当我运行测试时,H2用默认格式创建模式,而不是使用脚本: 如您所见,所有VARCHAR都是使用255大小创建的,而不是真实值。 你能帮我把飞行道和H2整合起来吗? 谢谢!