我有一个调用 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/