我刚刚从SVN下载了DUnit2代码库。有没有人编译成功了?为了编译它,我必须遵循哪些步骤/前提条件?有没有人知道是否存在已编译的版本?
谢谢
法比奥·维塔尔
发布于 2015-06-02 07:16:34
如果其他人在试图让DUnit2在Delphi (或XE5)上运行时遇到这个问题:
TL;DR:
Dunit2 (官方Delphi源,修订版101)目前还没有在SourceForge XE或XE5上成功构建(截至撰写本文的2015-06-01)。
要使其构建在XE或XE5上,请访问我发布的here补丁
将其应用于源代码树。它现在应该已经编译,您应该能够打开.groupproj并成功构建所有包含的项目。
该补丁程序可以与TortoiseSVN一起应用,也可以使用它创建(以防万一)。
较长版本:
令人惊讶的是,今晚(2015-06-01)我遵循了与Fabio相同的步骤(在2012年),并遇到了完全相同的问题(E2010不兼容的类型:“指针”和“整数”),试图在XE和XE5上编译DUnit2 ( 101版主干直接从SourceForge中检出)。
我得出以下结论:
1)与XE和XE5相关的head版本存在多个问题。
2)上面法比奥提到的关键问题可以通过用指针替换IntPtr来解决。
据我所知,这实际上并没有对代码产生任何影响,而且在此更改之后,测试套件在XE和XE5上也都通过得很好,尽管我也没有太仔细地研究(并且还受到以下警告的约束)。
3)项目搜索路径已过期XE。只需要更新/修复即可。
4)缺少用于XE5和其他代码的$DEFINES,尽管其他一些代码非常了解XE5
5)一些在XE上不可用的增强TRect内容。(这个量相对较小,对于内联到将在XE上编译并可用的更基本的表达式来说也相对微不足道,因此绝不会显示停止。)
(Re 3,4 &5 --遗憾的是,我得到的印象是,代码库并没有针对多个编译器/BDS目标进行很好的测试。)
6)某种Application.OnIdle/GUI测试错误(运行T_TGUITestCase测试来查看它),这样图形用户界面自动化测试就会阻塞,除非您通过移动鼠标或按shift键来触发Application.OnIdle事件(可在我的Windows8 XE5和XE二进制文件中重复)。
现在我脑海中浮现出许多年前的模糊记忆,我似乎记得以前遇到过这种情况,这是由于不久前在Delphi或Windows中的行为发生了微妙的变化。-- IIRC在过去的情况下,即使在系统上没有发生任何其他事情,即使您将Done设置为True,也仍然会在您的Delphi应用程序中偶尔调用Application.OnIdle()。在我的记忆中,这种情况在几年前由于Windows或Delphi (记不清是哪一个)的变化而发生了变化,如果你不想让你的应用程序完全进入睡眠状态,那么在将Done设置为False时必须更加谨慎。无论如何,这显然是我个人电脑上的一个问题,在我写这篇文章的时候,当前的DUnit代码是一个问题,所以我不得不修补它。
我是以一种相当笨拙的方式做到这一点的,例如,在运行图形用户界面自动化测试时,通过提供一个OnIdle处理程序来粗暴地处理事情,以发出应用程序实际上还没有完成的信号(例如,“不要阻塞,不要进入睡眠”),然后立即恢复任何先前的处理程序。毫无疑问,有一个更优雅的解决方案,也许是给自己发一条消息,让应用程序“活着”,但我第一次尝试或2次尝试更好的东西都没有成功,我也没有足够的兴趣继续下去。不过,我很有兴趣听到一个更好的解决方案。
发布于 2017-12-15 21:28:07
我已经提供了补丁,但是没有从SourceForge上的DUnit2团队得到任何反馈。因此,我将完整的提交历史记录分叉到我的DUnit2账户中。我在那里应用了许多修复,包括XE & XE3+的编译问题,以及如果没有鼠标操作就暂停的脚本化自检。我将在我的Github帐户[https://github.com/graemeg/dunit2]上继续我的DUnit2开发。
https://stackoverflow.com/questions/11190106
复制相似问题