在测试中使用Spring JpaRepository

时间:2015-08-26 08:23:00

标签: java spring junit spring-boot spring-data-jpa

我有配置的Spring Boot应用程序:

@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true, prePostEnabled=true)
@EnableJpaRepositories(basePackages = "com.site.data.repository")
@EntityScan(basePackages = "com.site.data.entity")
@ComponentScan(basePackages = "com.*")
@SpringBootApplication
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

resources文件夹中有application.properties文件:

spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
spring.datasource.driverClassName=...
#...

问题:

我尝试创建一个新类,它将向数据库添加一些条目。我认为最好的解决方案是制作一个JUnit测试类。因此,如果有人想要提供我的数据库,他可以简单地运行这个特定的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = WebSecurityConfig.class)
public class DataFeeder {
    @Autowired
    MyRepository myRepository;

    @Test
    public void feedDB() {
        MyEntity entity = new MyEntity();
        myRepository.saveAndFlush(entity);
    }
}

但是这种配置不起作用。当然,所有存储库在项目中都很有用。但是在运行测试期间,我获取了所有表都不存在的消息。例如,对于SOME_TABLE:

Table "SOME_TABLE" not found; SQL statement:

我看了很多关于如何测试JpaRepository的教程,但我不想要make test,它会添加一些项目并在测试结束后将其删除。我只想在数据库中保存一些数据(但在@Test函数中)

我的配置有什么问题?

1 个答案:

答案 0 :(得分:1)

使用@SpringApplicationConfiguration代替@ContextConfiguration。 这是Spring-boot应用程序测试所必需的。