这是编写针对CLJ-1633的最低先验知识失败测试的尝试。通过“最低先验知识”,我的意思是在存在错误的情况下测试失败,但可以想象在没有深入了解错误细节的情况下编写这样的测试。我认为寻找此类测试是一种很好的方法,可以找到测试覆盖的空白,并产生将在以后发现新颖回归的测试。
方法:生成可在序列上执行的单一操作列表,更改该序列。拷贝那个操作列表两次,并向每个插入应保留不变性的操作。执行这两个操作列表并验证最终结果相同。
在CLJ-1633未修复的情况下,我们得到以下输出
[java] 测试 clojure.test-clojure.sequences
[java]
[java] 在(seq-gentest)中失败(sequences.clj:135)
[java] {:acts1 (->> nil (cons :foo) (cons :foo) into-array next (apply list)),
[java] :acts2 (->> nil (cons :foo) (cons :foo) next),
[java] :result1 (:foo :foo),
[java] :result2 (:foo),
[java] :pass false}
[java]
[java] expected: (:result res)
[java] 实际: false