【问题标题】:Testing JPA Entities测试 JPA 实体
【发布时间】:2017-07-22 00:30:28
【问题描述】:

我想知道如何为 Spring Repository 类编写 Junit 测试。

例如: 类-AccountMoveActionDet

Jpa接口-AccountMoveActionDetlJpaRepository

我想测试这个存储库类的工作与否。Spring Jpa 支持一些方法,如

List findAll();
deleteAll();

我写了一个类,如下所示:

 @RunWith(SpringJUnit4ClassRunner.class)
public class AccountTypeMovementJpaRepositoryTest extends AbstractJpaTest {

    @Autowired
    AccountTypeMovementJpaRepository accountTypeMovementJpaRepository;

    @Override
    public void test() {
    executeSqlScript("/fixtures/accountTypeMovementJpa.sql");
    assertEquals("accountTypeMovementJpaRepository Test", accountTypeMovementJpaRepository.findAll().size(),
        JdbcTestUtils.countRowsInTable(getJdbcTemplate(), "COF5REP"));
    }

}

使用名称创建 bean 时出错 'com.gayan.cmp.jparepositories.test.AccountTypeMovementJpaRepositoryTest':

请帮我解决这个问题。

【问题讨论】:

  • 添加完整的堆栈跟踪
  • @Jens 我们不能自动连接 JpaRepositories 吗?
  • 当然是的..
  • 那我们如何测试 JpaRepositoris?
  • 使用测试数据库和测试数据

标签: java spring spring-mvc spring-boot spring-test


【解决方案1】:

如果使用spring-boot 1.4及以上版本最好place启动,测试JPA切片

@RunWith(SpringRunner.class)
@DataJpaTest
public class UserRepositoryTests {

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private UserRepository repository;

    @Test
    public void findByUsernameShouldReturnUser() {
        this.entityManager.persist(new User("sboot", "123"));
        User user = this.repository.findByUsername("sboot");

        assertThat(user.getUsername()).isEqualTo("sboot");
        assertThat(user.getVin()).isEqualTo("123");
    }

}

【讨论】:

  • @DataJpaTest 是什么意思
  • 我附上了一个链接
  • 您应该提到,此代码仅适用于 spring-boot 1.4 及更高版本
  • 我正在使用引导 1.4.1。但不能放@DataJpaTest 注释:(
  • @Gaiya 你遇到了什么问题?你添加spring-boot-starter-test 依赖了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
相关资源
最近更新 更多