单元测试私有集合,没有getter

时间:2017-02-12 09:20:10

标签: java unit-testing

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

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

请记住产品是私有的,没有getter,并且是在类中创建的,我该如何对它进行单元测试?我考虑过添加一个getter,但这不是暴露了我不希望别人知道的内部逻辑吗?

1 个答案:

答案 0 :(得分:3)

您希望对您的班级ProductRegister进行单元测试,而不是CopyOnWriteArrayList。所以问题必须是如何测试方法registerProduct(Product)是否做了应该做的事情。您没有返回值,因此我将与其他方法一起测试它。也许您有另一种方法可以返回已注册的产品,以便assertTrue( <registeredProducts>.contains(product))

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