小编Axx*_*era的帖子

DataJpaTest无法在单元测试中更新

我试图找出为什么我的单元测试不起作用。我看到Hibernate在更新之前进行了插入。为什么这样做呢?是测试失败的原因吗?

我已经为测试环境设置了hsqldb,该服务在mysql中似乎可以正常工作。

@Repository
public interface UserDataRepository extends CrudRepository<UserData, Integer> {

    @Transactional
    @Modifying
    @Query("UPDATE UserData ud SET chips = chips + :delta  WHERE ud.id = :userId")
    void addChipsToUser(@Param("userId") int userId, @Param("delta") long delta);
}
Run Code Online (Sandbox Code Playgroud)

我的测试课:

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

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private UserDataRepository repository;

    @Test
    public void testAddChipsToUser() {
            UserData data = new UserData();
            data.setChips(100);
            data.setId(13);                
            this.entityManager.persist(data);                

            System.err.println("pre u");                
            this.repository.addChipsToUser(13, 500);                
            System.err.println("post u");

            UserData two = this.repository.findOne(13);
            assertThat(two.getId()).isEqualTo(13);
            assertThat(two.getChips()).isEqualTo(600);
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

Hibernate: update user_player_data set chips=chips+? …
Run Code Online (Sandbox Code Playgroud)

junit spring hibernate spring-data-jpa spring-boot

2
推荐指数
1
解决办法
1139
查看次数

标签 统计

hibernate ×1

junit ×1

spring ×1

spring-boot ×1

spring-data-jpa ×1