【问题标题】:@Service Spring Unit Test too slow@Service Spring 单元测试太慢了
【发布时间】:2021-02-04 16:08:42
【问题描述】:

我需要测试我的 Spring Boot 应用程序,并从服务测试开始。但是我的测试似乎花费了太长时间,我对此很陌生,也许并不太慢。谁能给我一些建议,好吗?

这是我的测试:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ProiectLicentaApplication.class)
@AutoConfigureTestDatabase
@Transactional
public class TestJUnit {

    @Autowired
    private UserService userService;
    @Test
    public void testSaveUser(){
   
        User saveToDb = new User("test@gmail.com","test","employee");

        User saved = userService.save(saveToDb);
        Assert.assertEquals(saveToDb.getEmail(),saved.getEmail());
       
    }
}

这个简单的测试需要 230-245 毫秒。 save 方法有 Spring PasswordEncoder 对密码进行编码,但我认为这不会减慢它的速度。

服务方式

public User save(User user) {

    String password = passwordEncoder.encode(user.getPassword());
    user.setPassword(password);

   return userRepository.save(user);
}

【问题讨论】:

    标签: spring spring-boot unit-testing testing


    【解决方案1】:

    您当前的测试正在启动整个 Spring 上下文,这需要时间。

    对于您的具体情况,编写单元测试可能会更好。为此,您可以使用 JUnit 和 Mockito。请查看他们的文档,示例很简单。它可以帮助你使用@Captor(或ArgumentCaptor

    由于组件和系统之间的交互,集成测试通常需要更多时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      相关资源
      最近更新 更多