[英]Accessing private members for unit testing
通常,当我用C ++编写单元测试时,我会向tesee声明测试类的好友。 这样,我可以通过检查成员变量来直接检查操作结果。 Java没有朋友,那么您如何实现相同的行为? 在这里,我并不是在谈论简单的获取器和设置器,在这里测试是微不足道的,但是这种情况下,运算结果在内部存储在类中,并且不会暴露给外界。
您可以使用PowerMock框架模拟给定类中的私有成员。 您可以参考该链接以获取有关如何执行此操作的示例。
如果您不想使用框架,则可以使用Java反射来完成
在Java中使用反射来访问私有字段的值
Person privateRyan = new Person("John" , "8989736353");
Field privateField = person.getDeclaredField("phone");
//this call allows private fields to be accessed via reflection
privateField.setAccessible(true);
//getting value of private field using reflection
String value = (String) privateField.get(privateRyan);
使用反射访问私有方法
Method privateMethod = person.getDeclaredMethod("call");
//making private method accessible using reflection
privateMethod.setAccessible(true);
//calling private method using reflection in java
privateMethod.invoke(privateRyan);
(摘自: http : //javarevisited.blogspot.com/2012/05/how-to-access-private-field-and-method.html )
您也可以将测试类移入与测试类相同的包中,并使用package-private(无显式修饰符)作为字段或方法。 有关更多详细信息,请参阅控制对类成员的访问
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.