回答

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