無論測試目標是成功還是失敗(如C#/ Java中的try...finally構造),如何在運行「測試」目標後運行某個清理任務。try ...終於在MsBuild中等效
10
A
回答
12
目標元素有一個OnError屬性,您可以將其設置爲執行錯誤的目標,但因爲它只在目標出錯時執行,所以它只能解決您的一半情況。
您是否考慮過將目標鏈接在一起以表示要執行的測試「步驟」?
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>
的「TestInitialization」的目標是在那裏你可以執行任何測試初始化,「測試」目標執行的測試中,「TestCleanup」目標是否有任何類型的測試後的清理。
然後,使用CallTarget任務執行這些目標,使用RunEachTargetSeparately屬性設置爲真。這將執行全部的目標,無論成功或失敗。
完整的樣品低於:
<Project DefaultTargets = "TestRun"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Insert additional tests between TestInitialization and TestCleanup as necessary -->
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>
<Target Name = "TestRun">
<CallTarget Targets="$(TestSteps)" RunEachTargetSeparately="True" />
</Target>
<Target Name = "TestInitialization">
<Message Text="Executing Setup..."/>
</Target>
<Target Name = "Test">
<Message Text="Executing Test..."/>
<!-- this will fail (or should unless you meet the conditions below on your machine) -->
<Copy
SourceFiles="test.xml"
DestinationFolder="c:\output"/>
</Target>
<Target Name = "TestCleanup">
<Message Text="Executing Cleanup..."/>
</Target>
</Project>
0
或者使用<OnError>
打電話給你的目標在錯誤的情況下,和DependsOnTargets
或CallTarget
打電話給你相同的目標在正常情況下。
相關問題
- 1. 代碼與try-catch-rethrow等效於代碼w/o try-catch嗎?
- 2. 可以在終於有try/catch嗎?
- 3. 用於從VS2008發佈的等效msbuild命令
- 4. 關閉流/插座的try-catch-終於
- 5. 的try-catch-終於出現FormatException
- 6. 是try-catch沒有終於與try-catch一樣嗎?
- 7. __try/__終於等同於UNIX
- 8. 在try/catch塊中終於「超出範圍」
- 9. 等效於WM_MOVE
- 10. Powershell錯誤等價於try-catch嗎?
- 11. 等效於'@ECHO ON'的Unix等效
- 12. 等效於javascript中的browserField.displayContent()
- 13. 等效於Android中的arc4random()
- 14. 外()等效於R中
- 15. 等效於Python中的createDataPartition
- 16. R中的method_missing等效於
- 17. 等效於.NET中的NSOperationQueue
- 18. 等效於Sybase中的sp_executesql
- 19. 等效於R中的matlab'ans'
- 20. 等效於drracket中的「pass」
- 21. 等效於WPF中的TransparencyKey
- 22. 等效於Java中的memcmp()?
- 23. 等效於mongodb中的INET_ATON()
- 24. 在C#等效於Class_Terminate()
- 25. 除數在sql中等於零需要添加某種try catch
- 26. 工作流基礎中try-finally塊的等效項是什麼?
- 27. 水晶報表中的TryParse或Try/Catch等效項?
- 28. 在Ruby中等效於PHP的dirname(__ FILE__)?
- 29. 在JPA2標準中選擇......等效於
- 30. 在wxPython中等效於SWT的.pack()?
剛剛來測試這個現在,它完美的作品。感謝這個相當完整的例子。 – ripper234 2009-10-07 15:28:14
np!很高興工作! – 2009-10-07 18:29:22
好的答案,儘管知道如何「重新拋出」,繼續嘗試/最後的比喻會很好。清理可能需要執行,無論如何,但構建仍然失敗。 – 2012-05-04 17:15:16