如何模拟调用集合方法的方法,这个集合还没有setter?

时间:2015-10-03 15:26:56

标签: java unit-testing mocking mockito

我有以下课程:

public class UsersHolder {
    private Set<User> users = new HashSet<>();

    public void addUser(User user) {
        users.add(user);
    }
    ...
}

用户没有setter方法

有没有办法测试addUser方法?

1 个答案:

答案 0 :(得分:3)

有办法。

@RunWith(MockitoJUnitRunner.class)
public class UsersHolderTest {
    @InjectMocks private UsersHolder usersHolder;
    @Mock private Set<User> users;

    @Test
    public void addUser_shouldAddUser() {
        // given
        User user = new User();
        // when
        usersHolder.addUser(user);
        // then
        Mockito.verify(usersHolder).add(user);
    }
}

话虽如此,我不会测试这么简单的逻辑。此外,在这种情况下,集合成为应该来自外部的类依赖(通常集合被视为在类内部管理的数据持有者)。