我想知道单元测试私有(private)方法是否是一种好习惯?
通常只应测试公共(public)接口(interface)。
但是,我发现在复杂的计算中,调用大量不同的私有(private)方法,先对私有(private)方法进行单元测试,然后对公共(public)接口(interface)方法进行简单的测试。
举个例子,假设你有一个音频播放器并且你有一些功能:
void play(){ ... }
void pause(){ ... }
void seek(time t)
{
//All Private methods
checkIfValidTimeRange(...);
moveToFilePos(...);
fillBuffers(...);
}
通常我会为以下代码编写单元测试:checkIfValidTimeRange(...)
、moveToFilePos(...)
、fillBuffers(...)
。
但我不确定这样做是否是好的做法。
最佳答案
这不是一个好习惯(但这并不意味着你永远不应该这样做),如果可能的话,你想避免它。测试私有(private)方法通常意味着你的 design could be better .让我们快速看一下您的播放器示例:
moveToFilePos
:听起来更像是 I\O 操作的职责,而不是音乐播放器的职责fillBuffers
:更多的是内存管理器的工作,而不是音乐播放器checkIfValidTimeRange
:再一次,可能可以从玩家的范围移出一些简单的验证类(似乎这个在其他地方也可能有用)
目前,您的 音乐播放器 负责 I/O、内存管理等。这一切真的在其职责范围内吗?
关于c++ - 单元测试私有(private)方法是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202862/