gpt4 book ai didi

java - JUnit 测试私有(private)变量?

转载 作者:IT老高 更新时间:2023-10-28 13:53:12 36 4
gpt4 key购买 nike

我被分配了对一个我从未直接使用 JUnit 进行过的类进行单元测试的任务,并且严禁更改包中的代码。这通常没有问题,因为我们的大多数单元测试只是为了功能和输入/输出的一致性,这可以通过运行例程并检查它们的返回值来完成。

但是,偶尔需要检查类中的私有(private)变量,或者直接编辑私有(private)变量来检查一些内部行为。有没有办法访问这些,无论是通过 JUnit 还是任何其他方式,以进行单元测试,而无需实际更改原始源包中的任何代码?如果不是,那么在单元测试员与编码员可能不是同一个人的现实世界中,程序员如何处理这个问题?

最佳答案

首先,你现在处于一个糟糕的境地——要为你最初创建的代码编写测试任务,并且没有任何更改——噩梦!与您的老板交谈并解释,如果不使其“可测试”,就无法测试代码。为了使代码可测试,您通常会做一些重要的更改;

关于私有(private)变量。你实际上永远不应该那样做。旨在测试私有(private)变量是当前设计出现问题的第一个迹象。私有(private)变量是实现的一部分,测试应该关注行为而不是实现细节。

有时,私有(private)字段会通过一些 getter 暴露给公共(public)访问。我这样做,但尽量避免(在评论中标记,例如“用于测试”)。

由于您无法更改代码,我看不到检查私有(private)变量的可能性(我的意思是真正的可能性,不像反射黑客等)。

关于java - JUnit 测试私有(private)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6694715/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com