假设我正在测试以下类(~伪代码):
// (...)
public Result Process(Image image)
{
Image image2 = PreprocessImage(image);
PartialResult r1 = Process1(image2);
PartialResult r2 = Process2(r1);
Result result = FinalProcessing(r2);
return result;
}
public Image PreprocessImage(Image image)
{
Image tmp1 = Resize(image);
Image tmp2 = Blur(tmp1);
Image tmp3 = Median(tmp2);
Image tmp4 = ExtractSpecificAreas(tmp3);
return tmp4;
}
public Image Median(Image image)
{
// Actual image median algorithm
}
为了使问题更加...有问题,我们假设大多数这些方法(例如 Process1、Process2、FinalProcessing、ExtractSpecificAreas)的结果很难预测——例如,有一些启发式/决定性算法试图从图像中提取特征:它可能在 90% 的情况下成功,这是可以接受的。
您将对这些方法中的哪一种进行单元测试?除了无效的输入/边框条件之外,您将如何对这些方法进行单元测试?对于单元测试来说,该方法应该有多基本(或有多复杂)才有意义?