我知道编辑这个网站吗?

2011-10-07 - ImageJ 1.45 的单元测试

当我们启动§§1§§§时,我们首先编写了许多单元测试来保护ImageJ 1.x基站回归错误的影响。在撰写论文项目时,已经对50个核心IJ1类进行了单元测试,旨在检测ImageJ开发过程中引入的错误。这些测试位于ij1-tests repository中。

最初,这些测试目的是为了我们正在开发的 IJ1 修改版本运行,以促进与 IJ2 的集成。然而,随着开发的继续,我们通过将 IJ1 按原样嵌入 IJ2 中来实现最大§§3§§§的设计,使 IJ1 能够与 IJ2 继续着力开发。我们取消了 IJ1 的修改版本,只保留了单元测试。不幸的是转换了,我们没有完全测试的,并且他们没有针对IJ1的库存版本进行编译。

目前,我们已经修复了针对 ImageJ v1.44 及更高版本的库存版本编译(r4092)和运行(r4096r4098)的测试,并发布了instructions for running them

然后我们对所有1.45开发版本进行了测试。结果如下。

随着时间的流逝,一部分但越来越多的测试失败,这些代码中的行为正在发生变化。当然,有时行为改变是好的,例如修复错误时。但有时这些变化表明引入了回归错误。唯一确定的方法是逐次检查每个故障。对于每一个,需要或者更新测试(在错误修复的情况下,在测试以前的错误时行为导致测试失败),或者需要修复代码保留以前的行为(在更新回归错误的情况下)。

一旦所有测试通过,Jenkins就可以在ImageJ 1.x新版本发布时自动运行它们,并通过电子邮件报告任何失败,以便我们在恢复错误时及时发现。

版本

结果

1.43u

无法编译(版本太旧)

1.44o

全通行证

1.45a

全通行证

1.45b

2次失败:

  1. testFitSplineForStraightening(ij.gui.PolygonRoiTest):架构长度不同,预期.长度= 4实际.长度= 8
  2. testGetUncalibatedLength(ij.gui.PolygonRoiTest):预期:<1.0>但实际是:<6.324555320336759>

1.45c - 1.45h

4次失败:

  1. testFitSplineForStraightening(ij.gui.PolygonRoiTest):架构长度不同,预期.长度= 4实际.长度= 8
  2. testGetUncalibatedLength(ij.gui.PolygonRoiTest):预期:<1.0>但实际是:<6.324555320336759>
  3. testGetPixels(ij.VirtualStackTest):内存首先在元素[2]处找到不同;预期:<0>但实际是:<120>
  4. testGetProcessor(ij.VirtualStackTest):内存首先在元素[2]处找到不同;预期:<0>但实际是:<120>

1.45i - 1.45n

5次失败:

  1. testDrawPixelsImageProcessor(ij.gui.ArrowTest):预期:<0>但实际是:<73>
  2. testFitSplineForStraightening(ij.gui.PolygonRoiTest):架构长度不同,预期.长度= 4实际.长度= 8
  3. testGetUncalibatedLength(ij.gui.PolygonRoiTest):预期:<1.0>但实际是:<6.324555320336759>
  4. testGetPixels(ij.VirtualStackTest):内存首先在元素[2]处找到不同;预期:<0>但实际是:<120>
  5. testGetProcessor(ij.VirtualStackTest):内存首先在元素[2]处找到不同;预期:<0>但实际是:<120>

1.45o - 1.45q

7次失败:

  1. testDrawPixelsImageProcessor(ij.gui.ArrowTest):预期:<0>但实际是:<73>
  2. testFitSplineForStraightening(ij.gui.PolygonRoiTest):架构长度不同,预期.长度= 4实际.长度= 8
  3. testGetUncalibatedLength(ij.gui.PolygonRoiTest):预期:<1.0>但实际是:<6.324555320336759>
  4. testGetConvexHull(ij.gui.ShapeRoiTest)
  5. testGetFeretValues(ij.gui.ShapeRoiTest):货物首先在元素[0]处有所不同;预期:<10.44016>但实际是:<10.44030650891055>
  6. testGetPixels(ij.VirtualStackTest):内存首先在元素[2]处找到不同;预期:<0>但实际是:<120>
  7. testGetProcessor(ij.VirtualStackTest):内存首先在元素[2]处找到不同;预期:<0>但实际是:<120>

1.45r+

请参阅ImageJ 1.46 单元测试博客文章