我被分配了对一个我从未直接使用 JUnit 进行过工作的类进行单元测试的任务,并且严格禁止更改包中的代码。这通常不是问题,因为我们的大多数单元测试只是为了功能和输入/输出一致性,这可以简单地通过运行例程并检查其返回值来完成。
然而,偶尔需要检查类内的私有变量,或者直接编辑私有变量来检查某些内部行为。有没有一种方法可以访问这些内容,无论是通过 JUnit 还是任何其他方式,以进行单元测试,而无需实际更改原始源代码包中的任何代码?如果不是,那么在现实世界中,单元测试人员与编码人员可能不是同一个人,程序员如何处理这个问题?
首先,您现在的处境很糟糕 - 任务是为最初不是您创建的代码编写测试,并且没有进行任何更改 - 噩梦!与你的老板交谈并解释,如果不使其“可测试”,就不可能测试代码。为了使代码可测试,您通常会进行一些重要的更改;
关于私有变量。实际上你永远不应该这样做。旨在测试私有变量是当前设计出现问题的第一个迹象。私有变量是实现的一部分,测试应该关注行为而不是实现细节。
有时,私有字段通过一些 getter 暴露给公共访问。我这样做,但尽量避免(在注释中标记,例如“用于测试”)。
由于您无法更改代码,因此我看不到检查私有变量的可能性(我的意思是真正的可能性,而不是像反射黑客等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)