【问题标题】:Spring boot @DataJpaTest configured with Oracle database not fetching data配置了 Oracle 数据库的 Spring boot @DataJpaTest 未获取数据
【发布时间】:2019-08-16 07:09:59
【问题描述】:

我是 Spring Boot 的新手。我正在尝试为 Spring Boot 存储库配置 Junit 测试。下面是sn-p的代码和配置。

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
@ContextConfiguration(classes= ObjectAddressDaoImpl.class, loader=AnnotationConfigContextLoader.class)
@EnableAutoConfiguration(exclude=AutoConfigureTestDatabase.class)
@TestPropertySource("/application.properties")
public class AddressTest{

   @Autowired
   private AddressDao daoAddress;

   @Test
   public void testGetAddresses() {
     List<AddressEntity> addresses = daoAddress.getAddresses(99L);
     System.out.println("Addresses : " + addresses.size());
   }
}

application.properties

spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@IP:Port:schema
spring.datasource.username=abcs
spring.datasource.password=abcs

spring.profiles.active=oracle

spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
spring.jpa.hibernate.ddl-auto=validate

当我运行测试时,它会打印 0。

如果我的配置正确,请告诉我。任何及时的帮助表示赞赏!

【问题讨论】:

  • 如果它打印 0 并且没有崩溃,它可能是正确的。如果它打印 0,则可能是 getAddresses(99L) 执行的查询没有返回任何行。您选择省略代码,因为您发布的内容甚至无法编译,而且我们对正在测试的对象和方法一无所知,所以我们无能为力

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


【解决方案1】:

您需要将 daoAddress bean 正确@Autowire 到您的测试类中,以便正确建立连接。如果已启用日志记录,请同时分享记录器输出。

【讨论】:

  • 我错过了添加 Autowire dao 对象。现在我已经添加了代码。
【解决方案2】:

它打印 0 因为 daoAddress.getAddress() 没有返回任何东西。 你可以放一个调试指针并检查一下。

因此,对于测试,您需要在测试方法中编写断言并检查正确的输出 示例:-

assertTrue("A/Wing",daoAddress.getAddress());

接下来你可以自动装配你的 dao 类,也可以使用 mokito 进行测试

https://www.mkyong.com/spring-boot/spring-boot-junit-5-mockito/

此链接将帮助您了解春季考试。

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 2017-08-10
    • 2019-02-03
    • 2020-06-21
    • 2020-10-04
    • 2015-03-21
    • 2018-12-30
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多