【问题标题】:Seems my Junit test runs in runtime, the datasource missing似乎我的 Junit 测试在运行时运行,数据源丢失
【发布时间】:2018-09-18 13:38:33
【问题描述】:

我在单元测试中使用了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类,却没有找到驱动类?

【问题讨论】:

  • 也许您不小心在生产模式下也使用了该测试配置?
  • 将 h2 JDBC 驱动程序添加到您的类路径中,或者如果您使用 IDE,则将其作为库添加到您的项目中。 stackoverflow.com/questions/29609985/… 的可能重复项
  • @Nithin 看起来问题不是缺少依赖项,而是在生产配置文件/代码中使用测试配置。
  • 我在 IntelliJ 上遇到了同样的问题,它找不到 org.h2.Driver。我从网上尝试了几种解决方案,但是在简单地重新启动 IntelliJ 后,问题就解决了。希望这有助于节省一些时间。
  • @Nithin 我猜他正试图在除 dev 之外的不同环境中运行代码......猜他需要理清依赖关系

标签: java spring junit annotations h2


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 2014-12-25
    • 2018-12-20
    • 2017-04-20
    • 1970-01-01
    • 2014-11-11
    • 2023-03-13
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多