【问题标题】:Unit test for services服务的单元测试
【发布时间】:2017-12-24 13:44:23
【问题描述】:

我有一个带有方法 creatUser() 的服务类 UserServiceImpl

@Autowired
    private UserRepository  userRepository;

    @Autowired
    private RoleRepository roleRepository;

    @Override
    public User createUser(User user, Set<UserRole> userRoles) throws DataAccessException {
        User localUser = userRepository.findByUsername(user.getUsername());

        if (localUser != null) {
            LOG.info("user {} already exists. Nothing will be done.", user.getUsername());
        } else {
            for (UserRole ur : userRoles) {
                roleRepository.save(ur.getRole());
            }
            user.getUserRoles().addAll(userRoles);

            localUser = userRepository.save(user);
        }
        return localUser;
    }

我正在尝试使用单元测试对此进行测试,但不知道如何去做。 任何帮助就足够了。这是我的测试用例。

 @Test
    public void createUserTest() {
        UserServiceImpl usr = new UserServiceImpl();
        User user = new User();

        String[] SET_VALUES = new String[]{"ADMIN"};

        UserRole userRole = new UserRole();

        userRole.setRole(role);
        Set<String> myset = new HashSet<String>(Arrays.asList(SET_VALUES));

        ObjectMapper objectMapper = new ObjectMapper();

        String[] GPXFILES1 = myset.toArray(new String[myset.size()]);

        usr.createUser(user,myset.toArray());


    }

现在我被困在这里,我不知道如何将一个集合作为参数输入传递

【问题讨论】:

    标签: java unit-testing testing


    【解决方案1】:

    可以注入服务接口

     @Autowired UserService userService; 
    
     @Test
     public void createUserTest() {   
        //asserts
            }
    

    在这种情况下,您正在进行集成测试而不是单元测试。对于单元测试,您将不得不模拟对象,例如你可以使用 Mockito 框架。

    【讨论】:

    • 是的@Parviz Makari 可以帮助我通过代码或一些路径让我理解
    • 如何将参数传递给服务方法?在你的测试方法中做同样的事情。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多