我的代码真的不能单元测试吗?

Mr.*_*Boy 18 unit-testing

当前项目中的许多代码与使用第三方3D渲染引擎显示内容直接相关.因此,很容易说"这是一个特例,你无法对它进行单元测试".但我想知道这是否是一个有效的借口......很容易想到"我很特别",但事实上并非如此.

是否存在真正不适合单元测试的代码类型?合适的,我的意思是"没有花费更长的时间来弄清楚如何编写测试而不是值得努力"......处理大量的3D数学/渲染它可能需要大量的工作才能证明函数的输出与仅查看渲染图形相比是正确的.

Joa*_*uer 18

与显示信息,生成图像甚至是一般UI内容直接相关的代码有时很难进行单元测试.

但是,这主要仅适用于该代码的最高级别.通常在"表面"下面的1-2个方法调用是容易进行单元测试的代码.

例如,在验证失败时测试某些信息是否正确地动画到对话框中可能是非常重要的.但是,检查任何给定输入的验证是否失败都非常容易.

确保以"不可测试的"表面区域与测试分开的方式构建代码,并为非表面代码编写大量测试.


Kil*_*oth 7

对渲染代码进行单元测试的关键不是要证明第三方代码做正确的事情(即集成和回归测试).关键是要证明您的代码为第三方代码提供了正确的指令.换句话说,您只需要控制代码层的输入并验证输出(它将成为渲染器的输入).

当然,您可以创建渲染器的模拟版本,它可以使用便宜的ASCII图形或其他东西,然后根据需要验证伪图形,这样可以使测试更清晰,但是对于单元测试来说并不是绝对必要的的你的代码.