java - 如何模拟调用集合方法并且该集合没有setter的方法?

标签 java unit-testing mocking mockito

我有以下类(class):

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

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

用户没有setter方法

有没有办法测试addUser方法?

最佳答案

有办法。

@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);
    }
}

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

关于java - 如何模拟调用集合方法并且该集合没有setter的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924246/

相关文章:

java - 二维数组、字符串、 double 和加法

Java : error in SQL syntax

unit-testing - nunit UITest xamarin.forms : how to scroll a picker?

javascript - ASP.NET MVC 中的 TDD/BDD JavaScript 适用于多个浏览器引擎

mocking - 使用角度 2 Protractor 进行 e2e 测试

java - 扫描仪应该在这个程序中放在哪里?

java - Unitils/DBunit 和数据库测试

unit-testing - 如何进行仅在断言失败时通过的测试?

python - 在pytest中模拟一个连接类

android - 如何在 Android Emulator Camera 中模拟图片?