回答

2

您當然可以將很多TDD和DDD的概念應用到BizTalk開發中。你可以圍繞域對象的概念進行設計和開發(儘管在BizTalk和集成開發中,我經常會發現接口對象或合同優先設計是一種更有用的思維方式 - 在我的接口傳遞什麼消息)。你也可以按照'構建最簡單可行的事情'和'僅僅構建讓測試通過'的TDD哲學的東西。

但是,您的問題聽起來像您在問這些設計和開發方法中以代碼爲中心的問題。

我說得對,您希望能夠遵循首先編寫一個unti測試的測試驅動開發方法,該測試可以執行需求並且失敗,然後編寫滿足要求並導致測試通過的方法 - 所有在像C#這樣的傳統編程語言中?

對此,不幸的是,答案是否定的。大多數BizTalk工件(流水線,地圖,編排...)只能使用Visual Studio BizTalk插件真正構建。有很多方法可以查看底層的c#代碼,但是我們絕不會試圖直接開發這些代碼。

有兩種工具BizUnitBizUnit Extensions,它們可以控制BizTalk應用程序的執行並對它們進行測試,但這隻能讓您着手執行更多控制和更多測試驅動的集成測試。

您拖放到編排設計圖面上的形狀很大程度上只是將它們作爲一個不透明的執行單元來執行。和編排,管道,地圖等......所有這些東西都主要用於在整個BizTalk解決方案中執行(並測試)。

良好的設計實踐(從TDD等方法中獲取指針)將導致將BizTalk解決方案分解爲更小,更模塊化和可測試的塊,並且有許多方法可以獨立測試管道等事情。

但是代碼中的TDD和DDD的詳細細節很遺憾沒有被翻譯。

對於一些相關的討論,可能是有益的看到了這個問題:

Mocking WebService consumed by a Biztalk Request-Response port

+0

非常感謝您的回答。我很高興有BizUnit和BizUnit擴展那裏的東西。我會給他們一個鏡頭。 – 2008-11-13 13:44:42

0

你可以使用BizUnit創建和無論是在重用代碼的通用測試案例和Excel(功能性場景)

http://www.codeplex.com/bizunit

BizTalk Server 2009預計將具有更多的IDE集成可測試性。

乾杯 Hemil。

1

如果您經常在BizTalk中使用管道和自定義管道組件,則可能會發現我自己的PipelineTesting庫很有用。它允許您使用NUnit(或其他任何您喜歡的測試框架)爲完整管道,特定管道組件或甚至模式(如平面文件模式)創建自動化測試。

如果您使用這種功能,如果我可以自己這樣說(我在自己的項目中大量使用它),它是非常有用的。

您可以在庫heregithub上找到完整的代碼的介紹。關於其wiki還有一些更詳細的文檔。

0

BizUnit真的很痛苦,因爲所有的測試都是用XML而不是編程語言編寫的。

在我們的項目中,我們已經將BizUnit的部分「移植到了一個普通的舊C#測試框架中。這使我們可以直接在C#NUnit/MSTest代碼中使用BizUnit的步驟庫。這使得測試更易於編寫(使用VS Intellisense),更靈活並且最重要的是,在測試失敗的情況下更易於調試。這種方法的主要缺點是我們已經從主要的BizUnit源代碼中分離出來。

另一個我會考慮的未來項目的有趣選項是BooUnit,它是BizUnit上的Boo包裝。它具有類似於我們的BizUnit「端口」的優點,但還具有仍然使用BizUnit代替分叉的優點。

1

我同意CKarras的意見。許多人都認爲這是他們不喜歡BizUnit框架的原因。但看看BizUnit 3.0。它有一個對象模型,允許您用C#/ VB而不是XML編寫整個測試步驟。 BizUnitExtensions也正在升級到新的對象模型。

基於XML的系統的優點是生成測試步驟更簡單,並且在更新步驟時無需重新編譯。在我自己的擴展庫中,我發現XmlPokeStep(受NAnt啓發)非常有用。我的團隊可以即時更新測試步驟xml。例如,可以說我們必須調用一個創建客戶記錄的web服務,然後檢查數據庫中是否有相同的記錄。現在,如果webservice返回了ID(動態生成),我們可以即時更新下一步的測試步驟(當然不是在同一個xml文件中),然後使用它來檢查數據庫。

從編碼的角度來看,智能感應現在應該在BizUnit 3.0中解決。缺乏XSD確實讓過去變得困難。我希望得到一個XSD,這將有助於智能感知。對於BizUnit的舊版本,也有一些片段,但這些片段沒有更新,也許如果時間我會放棄。但是回到TDD問題,如果你在TDD背後有一些意圖 - 規範或行爲驅動元素,那麼你可以在一定程度上將它應用到Biztalk開發中,因爲BizTalk很大程度上基於契約驅動發展。所以你可以先指定接口並創建存根編排等來處理它們,然後構建出核心。你可以在那時寫BizUnit測試。我希望有一些工具可以使這個過程自動化,但現在還沒有。

使用諸如ESB指導之類的框架也可以爲您提供一個基本平臺,以便您可以通過迭代地在系統中實施主要用例。

只是想法。希望這可以幫助。我認爲它更值得博客更值得。 這是一個很好的話題。如果您有任何問題,請通知我,或者我們可以隨時在這裏討論更多問題。

Rgds Benjy