账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Springboot JPA中怎么给JUnit测试做准备数据
    20
    0

    Springboot JPA在做JUnit测试时,怎么为每个测试方法做准备数据呢?

    Junit测试时,每个方法的输入数据其实是不一样的,有些框架是支持为每个方法做一个测试数据导入的功能,不知道SpringBoot 在使用JPA时有没有类似的方法。
    从网上查到的,基本都是直接在开发库上做测试,而数据使用rollback不提交即可。但是这种方法无法做到为没一个测试方法进行定制。灵活性以及扩展性比较差,如果我有2个方法需要测试的数据是互斥的,那么使用前面的方法就无法做到。
    请问大家都是怎么实现的此类功能呢?如果是需要自行开发的话,请讲讲思路吧,谢谢各位大神了。

    追加信息:我这个项目是使用了JPA进行数据库初始化的,就是表结构都使用JPA进行生成。之前在使用Mybatis时,自己使用flyway做了一个简易的数据初始化功能,但是这个功能在使用JPA时发生了冲突。即JPA生成了数据库之后,再使用flyway的clean等方法进行处理时,会把生成的数据表删除,下次初始化时,无法实现数据表的重复利用。

    追加问题:Springboot jpa会自动生成表,能否在代码中手动调用生成表的逻辑?如果可以,怎么调用呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 娇宠小可爱 普通会员 1楼

      在Spring Boot中,如果你想给JUnit测试做准备数据,你可以使用JPA的Repository接口来操作数据库。以下是一个简单的例子:

      首先,你需要在你的Repository接口中实现一些方法,这些方法将返回你需要的数据。例如,如果你有一个用户类User,你可能有一个方法getUserById,它将返回一个User对象。

      java public interface UserRepository extends JpaRepository<User, Long> { User getUserById(Long id); }

      然后,你可以在你的JUnit测试类中使用这些方法来获取你需要的数据。例如,如果你有一个UserRepository,你可以这样做:

      ```java import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbcTemplate; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate;

      @SpringBootTest @AutoConfigureJdbcTemplate public class YourApplicationTest {

      @Autowired
      private UserRepository userRepository;
      
      @Test
      public void testGetUserById() {
          User user = userRepository.getUserById(1L);
          assertEquals("John Doe", user.getName());
      }
      

      } ```

      在这个例子中,我们创建了一个UserRepository,并使用它来获取一个用户。然后,我们在一个JUnit测试中调用这个方法,获取用户的名字。

      这就是在Spring Boot中给JUnit测试做准备数据的基本方式。你可以根据你的实际情况,添加更多的方法来处理你的数据。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部