这是炒作,因为我不使用OpenCover,但覆盖分析工具应该仪器穿过的所有行。由于您正在进行图像处理,因此每个像素肯定会触发OpenCover对匹配的代码行进行一些分析,并且您有很多像素
假设OpenCover需要0.01ms来测量一行代码(这也是纯粹的猜测),你正在处理1280 * 1024的图像,并且每个像素需要3行代码(红色通道,xor绿色和蓝色,无论如何),你会得到1310720 * 0.01 * 3 =约39秒。对于一个测试。
我怀疑你只有一个测试,因此通过测试的量乘以本;你可能有一个想法,为什么它很慢。
你或许应该尝试在小范围内测试你的算法:除非你是做图像范围内的操作(我看不出哪些?)你的代码不需要整体形象上下工夫。或者使用较小的图像?
编辑:我(又一个,不知道OpenCover本身)看了一下这里的测试套件,可以说,这个问题是来自所有正在测试的数据; evey单个图像被加载和处理以进行相同的测试,这不是您想要单元测试的方式。
测试加载每个图像类型成的lib Image类,然后测试从图像类一个旋转,一个大小操作等,不要每次测试一切!
由于测试是必要的,也许您可以探索OpenCover options以排除某些数据。也许只通过检测算法的外壳来改进覆盖率分析会有所帮助。看看filters看看你能隐藏什么,以便让它可以运行。
或者你只能每天运行的代码覆盖率,preferently晚上?
好的谢谢你的解释:)只运行在单元测试,而不是前后整合测试似乎是一个好主意。 – thomasb 2014-10-07 07:09:10