似乎我的Junit测试在运行时运行,数据源丢失

时间:2018-09-18 13:38:34

标签: java spring junit annotations h2

我在单元测试中使用了H2数据库,使用Java配置:

@Configuration @EnableJpaRepositories(basePackageClasses = AdvertisementRepository.class) public class EmbeddedDatabaseConfig {

    /**
     * Creates DataSource for an embedded Database (H2).
     */
    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
    }

并设置范围以在pom.xml中进行测试:

<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.184</version>
            <scope>test</scope>
        </dependency>

它已经成功构建并在JUnit测试中,但是当我在服务器上运行它时,它报告错误:

 java.lang.ClassNotFoundException: org.h2.Driver
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1108)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
    at org.springframework.jdbc.datasource.embedded.H2EmbeddedDatabaseConfigurer.getInstance(H2EmbeddedDatabaseConfigurer.java:48)
    at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseConfigurerFactory.getConfigurer(EmbeddedDatabaseConfigurerFactory.java:39)
    ... 51 more

我很困惑:junit测试不会在运行时运行,对吗?为什么我的代码会自动读取java config类,而找不到驱动程序类?

1 个答案:

答案 0 :(得分:0)

虽然我无法指出确切的问题,但是您面临的问题是,在尝试运行测试时org.h2.Driver不可用。如注释之一所述,确保jar在类路径中可用。

PS:如果您正在使用Ant构建并尝试在部署到生产环境之前运行测试,请确保在ANT运行测试之前该jar可用。