2012-03-27 106 views
8

我已经使用qunit为我的JavaScript代码编写了一系列测试。由于某种原因,我的列表中的第一个测试会运行,然后列表中的最后一个测试运行,然后是第二个测试,第三个测试,最后一个测试,第四个测试等等。这对我的测试非常重要按照我所拥有的顺序运行。我尝试关闭该选项,qunit首次运行上次失败的测试,但它仍在执行此操作。有没有什么办法解决这一问题?让QUnit按顺序运行测试

回答

11

首先,弄清楚为什么你的测试必须以特定的顺序运行。单元测试的重点是测试是原子性的,应该可以按照任意顺序运行它们 - 如果你的测试套件无法做到这一点,你需要弄清楚为什么它可能代表更大的问题。

如果您无法弄清楚,那么您可能需要将测试套件分成更小的测试组,直到找到导致问题的测试组为止。

编辑:找到该参考文献在http://www.educatedguesswork.org/2011/06/curse_you_qunit_1.html。显然,将它添加到你的测试套件将有助于QUnit.config.reorder = false;

+0

不,我知道为什么。提高效率。 (我不想进入细节,但现在每个测试都需要很长时间才能运行,我需要尽可能简化流程)。一些测试依赖于之前测试的结果。我可以让所有东西都成为原子,但所有东西都会比现有的更长。一旦我处于一个时间无关紧要的位置,我可能会回到原子模型,但现在我希望我的测试能够按照我为了提高效率而编写的顺序运行。 – user1028497 2012-03-27 06:30:05

+2

@ user1028497“一些测试依赖于先前测试的结果”,那么你就没有原子性 - 你应该在测试本身中准备测试所需的东西。 – unludo 2012-03-27 06:56:15

+0

我这样做是的。但在这个时候,我需要效率,这是做事的最好方式。我不想解释所有的东西,但足以说现在我需要测试来按照我所拥有的顺序运行。 – user1028497 2012-03-27 07:01:01

0

也许你可以考虑将每个主要计算的代码放在一个函数中,该函数在开始时进行测试,检查计算是否已经完成。如果计算没有完成,则进行计算并将结果保存在某处。如果计算已经完成,那么只返回结果。通过这种方式,您可以对所有测试进行单一计算,但仍可以自动执行测试。

我可以涉及到单元测试中耗时计算的问题,但测试组必须能够进行任何单元测试并作为独立的自主测试执行。出现严重问题时尤其如此,必须特别加以解决。

相关问题