java - 在单元测试中测试私有(private)组件

标签 java unit-testing junit

所以我有一个这样的类(class):

public class Person {
   private List<String> list = new ArrayList<String>();

   public addPerson(String s) {
        this.list.add(s);   
   }
}

public class TestPerson extends TestCase {
     private Person person;

     public testAddPerson() {
        this.person.addPerson("John");
     }    
}

我的问题是如何测试 John已添加到列表中。 我想做一些测试,例如 list.size() == 1list.get(0).equals("John")

有什么建议吗?

最佳答案

对于此代码测试没有任何意义,它实际上会测试列表实现是否执行了它应该执行的操作,并且这不应该成为您的测试的一部分。

问题是 - 您的列表在哪里使用,公共(public)访问位置在哪里,以及预期的行为是什么。这是你应该测试的。

总的来说,这听起来像是 test-after,您尝试添加测试是为了测试而不是为了验证。

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

相关文章:

xcode - 一个单元如何测试依赖于网络的操作?

unit-testing - 测试采用空列表的函数

java - 使用mockito captor捕获发送到方法的参数

c# - 单元测试项目 Azure Functions 无法加载文件或程序集 'Newtonsoft.Json'

java - 从 JUnit 测试调用静态方法而不指定类

ant - 运行 "Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found."时如何解决 "ant test"?

java - 西蒙说计数器无法正常工作

java - 没有显式封闭实例的非静态内部类对象创建

JavaScript 无法从 Java 解析使用 Gson 序列化的字符串

java - 为什么 BroadcastReceiver 可以在应用关闭时接收到 intent?