Unit testing 调试检查平等性的契约冲突时,如何获得更多信息

Unit testing 调试检查平等性的契约冲突时,如何获得更多信息,unit-testing,tdd,eiffel,Unit Testing,Tdd,Eiffel,我有下面的埃菲尔密码。我正在用合同进行测试驱动设计 check sorter.sorted (<<1>>).is_equal (<<1>>) end 检查 sorter.sorted()等于() 终止 代码正确地检测到我的排序返回了错误的值。不过,如果能看到排序后返回的内容,那就太好了。我可以看出,在检查抛出异常之前,is_equals使用这两个值并返回false,这已经太晚了 我在其他测试框架中看到过,他们对测试框架有一个特殊的is_

我有下面的埃菲尔密码。我正在用合同进行测试驱动设计

check
    sorter.sorted (<<1>>).is_equal (<<1>>)
end
检查
sorter.sorted()等于()
终止
代码正确地检测到我的排序返回了错误的值。不过,如果能看到
排序后返回的内容,那就太好了。我可以看出,在检查抛出异常之前,
is_equals
使用这两个值并返回false,这已经太晚了

我在其他测试框架中看到过,他们对测试框架有一个特殊的
is_equal
。这样可以提供更好的反馈。e、 g

检查是否相等(预期值,测试中的值)


埃菲尔铁塔中有类似的东西吗?

我建议您查看库
测试。特别是,类
EQA_常用的断言
具有功能
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>>)
assert_equal(“数组是否已排序?”,sorter.sorted(),)

注意,
检查
语句不是“调试”语句:
check
语句用于确保正确性(即错误触发),而debug语句有助于了解发生了什么。
若要在
检查
失败后调试代码,您需要添加
调试
语句,在
检查
触发之前输出信息。

是的,我认为它应该工作,不幸的是,我无法让它工作。库和项目并发兼容性方面的各种错误。每次我尝试修复时,都会遇到另一个错误。因此,现在必须提出另一个问题。但是今天我需要休息。@ctrl-alt-delor请告诉我您的Eiffel编译器的版本号和项目的并发设置。它是几天前下载的最新版本(
version=EiffelStudio 19.5(19.05.10.3187 GPL Edition-linux-x86-64)
)。并发设置很简单,我在做什么时不需要它们,所以决定将其设置为“无”。位这只会创建其他编译错误。说预编码不兼容。我无法解决该问题。@ctrl-alt-delor快速解决方案是从项目中删除预编译(在项目设置中导航到目标|组|预编译并删除嵌套节点)。那么你就需要回答你的问题了吗?如果是,将答案标记为已接受是有意义的,如果不是,欢迎进一步提问。