如何编译DUnit2

时间:2012-06-25 13:15:01

标签: delphi delphi-xe dunit

我刚刚从SVN下载了DUnit2代码库。 有人成功编译了吗? 我要遵循哪些步骤/先决条件来编译它? 有人知道是否存在已编译的版本吗?

谢谢

fabio vitale

3 个答案:

答案 0 :(得分:4)

projects 目录中,找到与您的Delphi版本对应的子目录。在其中,您应该找到一个项目组文件, DUnit2ProjectGroup.bpg DUnit2ProjectGroup.bdsgroup DUnit2Delphi < version> .groupproj 的。打开它并按顺序编译所有项目。

使用DUnit2与using DUnit几乎相同。

答案 1 :(得分:4)

如果其他人在尝试让DUnit2在Delphi XE(或XE5)上运行时偶然发现了这个问题:

TL; DR:

Dunit2(官方SourceForge来源,修订版101)目前(在2015-06-01撰写时尚未成功)在Delphi XE或XE5上构建。

要使其在XE或XE5上构建,请获取我发布的补丁here

将其应用于源树。它现在应该编译,您应该能够打开.groupproj并成功构建所有包含的项目。

补丁可以与TortoiseSVN一起使用并使用TortoiseSVN创建(如果重要的话)。

更长的版本:

今晚令人惊讶(2015-06-01)我遵循与法比奥相同的步骤(2012年不会少)并遇到完全相同的问题(E2010不兼容类型:'指针'和'整数')尝试在XE和XE5上编译DUnit2(直接从SourceForge检出的修订版101中继)。

我得出以下结论:

1)关于XE和XE5的头版修订存在多个问题。

2)Fabio提到的关键问题可以通过用指针替换IntPtr来解决。

据我所知,这实际上似乎并没有对代码产生任何影响,并且测试套件在此更改后也在XE和XE5上都没有通过,尽管需要注意的是 - 我看起来并不太谨慎要么(并且还要遵守下面的警告。)

3)项目搜索路径已过期[XE]。只是需要更新/修复。

4)XE5和其他人缺少$ DEFINES,尽管其他一些代码非常了解XE5

5)XE上没有的一些增强的TRect内容。 (数量相对较小且相对较小,无法内联到更基本的表达式,这些表达式将被编译并在XE上可用,因此绝不会显示停止。)

(Re 3,4& 5 - 遗憾的是我得到的印象是代码库对多个编译器/ BDS目标的测试不是很好。)

6)某种Application.OnIdle / GUI测试错误(运行T_TGUITestCase测试以查看它),GUI自动化测试将阻止,除非您通过移动鼠标或按Shift键继续“提供”Windows消息队列触发Application.OnIdle事件(可在我的Windows 8 XE5和XE二进制文件上重复)。

现在说起我的头脑,从多年前的模糊记忆中,我似乎记得曾经遇到过这种情况,而且这种行为在Delphi或Windows中都会发生细微变化前。 - 过去的IIRC,过去的情况是,即使你在系统上没有其他任何东西,即使你将Done设置为True,你的Delphi应用程序中偶尔会得到偶然的Application.OnIdle()调用。 。我记得,在某些时候,由于几年前Windows或Delphi的变化(不记得是哪一个),而且如果你不想要你的Done设置为False,则需要更加谨慎一些。应用程序完全入睡。在任何情况下,今晚我的电脑上显然是一个问题,当前(截至本文撰写时)DUnit代码,所以我不得不修补它。

我这可以用一种相当流行的方式做到这一点,例如:通过提供OnIdle处理程序来处理事物,同时运行GUI自动化测试以表明应用程序实际上没有完成(例如“不阻止,不要进入休眠状态”),然后立即恢复任何先前的处理程序。毫无疑问,这可能是一个更优雅的解决方案,也许是通过向我们自己发布消息以保持应用程序“活着”,但我的第一次尝试或2更好的事情没有成功,我没有兴趣去追求这个进一步。我很想知道更好的修复方法。

答案 2 :(得分:0)

我提供了补丁,但没有得到SourceForge上DUnit2团队的反馈。所以我将带有完整提交历史的DUnit2分叉到我的Github帐户中。我在那里应用了很多修复,包括XE& amp;的编译问题。 XE3 +和可编写脚本的自检,如果没有鼠标操作,则会暂停。我将继续在我的Github帐户[https://github.com/graemeg/dunit2]上开发DUnit2。