【问题标题】:Can' t see data from repository on junit在 junit 上看不到存储库中的数据
【发布时间】:2019-08-05 09:39:52
【问题描述】:

您好,我想尝试从我的存储库中接收数据,但我什么也检索不到。 我在 java 类中进行了自动装配:“src/main”它可以工作 但在junit测试中没有

我尝试过 Jpa 存储库的任何方法,但我总是收到一个“空”参数

Junit 类

@RunWith(SpringJUnit4ClassRunner.class)
@DataJpaTest
class testClass {

    @Autowired
    private TestEntityManager entityManager;


    @Autowired
    private ClienteRepository clienteRepository;


    @Test
    public void test() {


       List<ClienteEntity> cliente = clienteRepository.findAll();
        System.out.println(cliente);

    }

存储库

@Repository
public interface ClienteRepository extends JpaRepository<ClienteEntity, Integer>{
    ClienteEntity findByEmail(@Param("email") String email);

控制台 使用控制台中的 system.out.printl 我总是有这个输出:

    Hibernate: select clienteent0_.id as id1_0_, clienteent0_.cap as cap2_0_, clienteent0_.citta as citta3_0_, clienteent0_.cognome as cognome4_0_, clienteent0_.email as email5_0_, clienteent0_.indirizzo as indirizz6_0_, clienteent0_.nome as nome7_0_, clienteent0_.password as password8_0_, clienteent0_.token as token9_0_ from cliente clienteent0_
    []

    a empty list of ClientEntity

【问题讨论】:

  • 您可以尝试删除@DataJpaTest 吗?你明白这个注解是做什么的吗?

标签: java spring junit spring-rest


【解决方案1】:

根据情况,可能需要检查测试范围内的其他设置。

在spring boot中,如果有嵌入式数据库,则在测试范围内由那个数据库组成。

【讨论】:

  • 另外,如果你想要集成测试,使用@SpringBootTest可能是明智之举。
  • 他只想测试 repo 级别。他不需要整个网络服务器
  • 嗨,如果我不想使用嵌入式数据库,感谢您尝试帮助我?如何将真实数据库与测试连接起来?我正在尝试使用我在 src/main 上使用的相同属性
  • 试试@AutoConfigureTestDatabasedoc
  • 我解决了:@AutoConfigureTestDatabase(replace = Replace.NONE) 谢谢:D
【解决方案2】:

尝试使用此注释。

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {HCSRepositoryContext.class})

【讨论】:

  • 嗨,感谢您尝试帮助我,我已经尝试过,但是我遇到了同样的问题 java.lang.nullPointerException 我认为无法连接到我的数据库
【解决方案3】:

基于@DataJpaTest 文档:

如果类路径上有嵌入式数据库,它会配置 还有一个

因此,请仔细检查是否没有,如果需要,请遵循此文档:

但是,如果您更喜欢针对真实数据库运行测试,您可以 使用@AutoConfigureTestDatabase

由于您的测试可能使用基于实体注释的嵌入式测试,并且您正在再次测试一个空数据库。

编辑

如果您查看@AutoConfigureTestDatabase,您可以看到测试将根据数据库配置查看哪些属性:

@PropertyMapping(value="spring.test.database")

【讨论】:

  • 嗨,如果我不想使用嵌入式数据库,感谢您尝试帮助我?如何将真实数据库与测试连接起来?我正在尝试使用我在 src/main 上使用的相同属性
  • 检查我的更新
  • 我解决了:@AutoConfigureTestDatabase(replace = Replace.NONE) 谢谢:D
猜你喜欢
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
相关资源
最近更新 更多