首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用数据库测试spring引导api

用数据库测试spring引导api
EN

Stack Overflow用户
提问于 2020-01-13 13:08:33
回答 1查看 808关注 0票数 1

我想要自动测试我的spring。现在我有了7-8个有趣的情况,并使:

在postgres 7 db中部署

  1. (test1,2,test1 write db test1.
  2. 运行测试并转到2.

)

这很难。什么是简单的方法?

我希望有一个db用于测试(清除db,只有structure)

  • before测试写入数据库中的表(带有数据、示例-用户、报告等的特殊文件)

  • 在测试删除夹具后运行测试

  • ,并再次拥有清晰的db .

我能在春天之前做吗?早期我用python/django编程,并使用类似的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 14:02:02

我认为解决这个问题的一种方法是通过自定义属性文件和@Configuration类。

您将为每个测试创建属性文件,例如test1-dbA.properties

代码语言:javascript
运行
复制
jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
jdbc.username=db1
jdbc.password=..

接下来,您将定义从Test1-dbA属性加载属性的DataSource bean。

代码语言:javascript
运行
复制
@Configuration
@EnableJpaRepositories(basePackages = "org.baeldung.repository")
@PropertySource("test1-dbA.properties")
@EnableTransactionManagement
public class DB1Config {
        @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("jdbc.url"));
        dataSource.setUsername(env.getProperty("jdbc.user"));
        dataSource.setPassword(env.getProperty("jdbc.pass"));

        return dataSource;
    }
// ...
}

在JUnit测试中,您将加载配置类:

代码语言:javascript
运行
复制
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class, DB1Config.class})
public class db1Test{
    // ...
}

这个选项和其他选项可以在这里查找:https://www.baeldung.com/spring-testing-separate-data-sourcehttps://www.baeldung.com/spring-jpa-test-in-memory-database

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档