2012-06-25 71 views
2

我剛剛從SVN下載了DUnit2代碼庫。 有人編譯成功嗎? 爲了編譯它,我必須遵循哪些步驟/先決條件? 有人知道一個已編譯版本是否存在?如何編譯DUnit2

謝謝

法比奧維塔勒

回答

4

項目目錄,找到對應於你的Delphi版本的子目錄。在這裏面,你應該找到一個項目組的文件,無論是DUnit2ProjectGroup.bpgDUnit2ProjectGroup.bdsgroup DUnit2Delphi <版> .groupproj。打開它並按順序編譯所有項目。

使用DUnit2與using DUnit幾乎相同。

+0

[DCC錯誤] TestFramework.pas(1219):E2010不兼容的類型:'指針'和'整數' –

+1

您希望我們如何處理編譯錯誤?你想讓我們在SO評論中調試它們嗎? –

+0

大衛道歉:你說的對!我發佈了錯誤的通知,只是說當前版本的DUnit2不能在Delphi XE下編譯。再次道歉。 –

4

在在這個問題上的情況下別人絆倒,而試圖讓DUnit2德爾福XE(或XE5)運行:

TL; DR:

Dunit2(官方SourceForge的來源,修訂101)沒有按目前(截至2015-06-01撰寫的這篇文章)在Delphi XE或XE5上成功構建。

爲了使它建立在XE或XE5,去獲得補丁我張貼here

將它應用到源代碼樹。它現在應該可以編譯,你應該可以打開.groupproj併成功構建所有包含的項目。

該修補程序可能與TortoiseSVN一起使用並創建(如果它很重要)。

加長版:

令人驚訝的是,今晚(2015年6月1日),我遵循了相同的步驟,法比奧(2012年不會少),跑進完全相同同樣的問題(E2010不兼容的類型:「指針'和'整數')嘗試在XE和XE5上編譯DUnit2(直接從SourceForge檢出版本101的中繼)。

我已經來到了以下結論:

1)有與頭部的多個版本的問題相對於這兩個XE和XE5。

2)的Fabio以上的關鍵問題提到可以通過用指針代替IntPtr的固定。

這實際上並沒有在代碼中有任何區別,據我所知,測試套件在改變之後也能在XE和XE5上正常傳遞,儘管需要注意 - 我還沒有看過仔細地(或者注意以下注意事項)。

3)項目搜索路徑過期[XE]。只需要更新/修復。

4)缺少$定義XE5和其他人,儘管有一些其他的代碼是很清楚XE5

5)某些增強TRect東西,這不適用於XE的。 (這個數量相對較小,對於更多基本表達式來說是相對較小和相當微不足道的,因爲這些表達式可以在XE上編譯和使用,所以決不會停止。)

(Re 3,4 & 5 - 很遺憾,我收到了印象)

6)某種Application.OnIdle/GUI測試錯誤(運行T_TGUITestCase測試以查看它),GUI自動化測試將被阻止,除非您保留通過移動鼠標或按Shift鍵觸發Application.OnIdle事件(可在Windows 8 XE5和XE二進制文件中重複)來「餵食」Windows消息隊列。

現在說起我的頭頂,以及許多年前的模糊記憶,我似乎記得之前遇到過這種情況,而且這種情況在Delphi或Windows中有些微小的變化過去。 - IIRC過去,即使在系統中沒有其他事情發生時,即使您將「完成」設置爲「True」,實際上仍然會在Delphi應用程序中偶爾接受Application.OnIdle()調用, 。據我所知,由於幾年前Windows或Delphi發生了變化(不記得是哪一個),這一點有所改變,如果你不想讓你的設置成爲False,你必須更謹慎一些。應用程序完全入睡。無論如何,它顯然是今晚PC上的一個問題,與當前的(截至撰寫本文時)DUnit代碼一樣,所以我不得不補充它。

我這樣做可以說是一種相當低調的方式,例如,通過提供一個OnIdle處理程序來處理事件,同時運行GUI自動化測試來表明該應用程序實際上並未完成(例如「不要阻止,不要進入睡眠狀態」),然後立即恢復之前的任何處理程序。毫無疑問,這是一個更優雅的解決方案,也許通過向我們發佈一條消息讓應用程序保持「活躍」,但是我的第一次嘗試或更好的事情並沒有解決,我對此沒有興趣進一步。我有興趣聽到更好的解決方法。

+0

這仍然不能編譯爲XE5,所以我已經應用了該補丁。有什麼理由不能在GitHub上更新它? –

+1

爲了處理項目6,我在TRefGUITestRunner中添加了一個TApplicationEvents,代碼爲:「完成:=不是阻塞並分配(套件)和(TotalTestsCount> 0);」,現在它在這裏工作。 –

0

我已經提供了補丁,但沒有從SourceForge上的DUnit2團隊獲得任何反饋。於是我將DUnit2與完整的提交歷史記錄分離到我的Github帳戶中。我已經在那裏應用了許多修補程序,包括XE & XE3 +的編譯問題以及在沒有鼠標動作時暫停的腳本自我測試。我將繼續在我的Github帳戶上開發DUnit2 [https://github.com/graemeg/dunit2]。