java - 没有 setter/getter 的单元测试私有(private) Collection

标签 java unit-testing

我有一个调用 ProductRegister 的类,它有一个方法

private List<Product> products = new CopyOnWriteArrayList<>();
void registerProduct(Product p) {
    products.add(p);
}

请记住,产品是私有(private)的,没有 setter/getter ,并且是在类内部创建的,我该如何对其进行单元测试?我考虑过添加一个 getter,但这不是暴露了我不想让其他人知道的内部逻辑吗?

最佳答案

您想对您的类进行单元测试 ProductRegister , 而不是 CopyOnWriteArrayList .所以问题必须是如何测试方法是否为 registerProduct(Product)做它应该做的事。您没有返回值,所以我会结合另一种方法对其进行测试。也许您有另一种方法可以返回已注册的产品,这样您就可以 assertTrue( <registeredProducts>.contains(product))

edit:这样,如果您更改实现(例如,使用另一个集合而不是 CopyOnWriteArrayList),您就不必更改 JUnit 测试。

关于java - 没有 setter/getter 的单元测试私有(private) Collection ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42185938/

相关文章:

java - 执行java程序时出错

python:测试子进程调用是否抛出预期异常

java - 如何测试使用 Selenium 的 Java 代码?

java - 为什么我们在 TreeMap 中转换为 Comparable

java - 使用 ReentrantReadWriteLock 和 boolean 标志

java - 是否可以将哈希码限制为Java中的特定字符数

ios - 快速进行 iOS 单元测试

unit-testing - 如何测试模型具有has_secure_password?

java - Mockito 的几个参数条件

java - 在 Spring MVC 中流式传输 JSON 输出