首页 > 解决方案 > 在调试检查相等性的合同违规时如何获取更多信息

问题描述

我有以下埃菲尔代码。我正在使用合同进行测试驱动设计。

check
    sorter.sorted (<<1>>).is_equal (<<1>>)
end

代码正确检测到我的排序返回错误值。但是,很高兴看到sorted返回的内容。我可以看到is_equals在检查引发异常之前消耗这两个值并返回 false 为时已晚。

我在其他测试框架中看到他们有一个特殊is_equal的测试框架。这样可以提供更好的反馈。例如

check_equal(expected, value_under_test)

埃菲尔有这样的东西吗?

标签: unit-testingtddeiffel

解决方案


我建议看一下 library testing。特别是,类EQA_COMMONLY_USED_ASSERTIONS具有assert_equal似乎可以做您想做的事情的功能:

assert_equal (a_tag: READABLE_STRING_GENERAL; expected, actual: detachable ANY)
        -- Check that `expected ~ actual'.

原来的例子看起来像

assert_equal ("Is array sorted?", sorter.sorted (<<1>>), <<1>>)

推荐阅读