我被分配了对一个我从未直接使用 JUnit 工作过的类进行单元测试的任务,并且严格禁止更改包中的代码。这通常不是问题,因为我们的大部分单元测试只是为了功能和输入/输出一致性,这可以通过运行例程并检查它们的返回值来简单地完成。
但是,偶尔需要检查类内部的一个私有变量,或者直接编辑一个私有变量来检查一些内部行为。有没有一种方法可以访问这些,无论是通过 JUnit 还是任何其他方式,以进行单元测试而不实际更改原始源包中的任何代码?如果不是,程序员如何在单元测试人员可能与编码人员不是同一个人的现实世界中处理这个问题?
原文由 donnyton 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,您可以使用反射来访问私有变量。虽然不是一个好主意。
看一下这个:
http://en.wikibooks.org/wiki/Java_Programming/Reflection/Accessing_Private_Features_with_Reflection