我试图找出为什么我的单元测试不起作用。我看到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)