<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>BizUnit - Framework for Automated Testing of Distributed Systems</title><link>http://www.codeplex.com/bizunit/Project/ProjectRss.aspx</link><description>The adoption of an automated testing strategy is fundamental in reducing the risk associated with software development projects, it is key to ensuring that you deliver high quality software. Often,...</description><item><title>New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=27653</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;One more addition to this one, if you intend to use ContextLoader in the FileValidationStep, you'll need to modify the following as well in this file:&lt;span style="font-size:13px"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size:13px"&gt; (&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="font-size:13px"&gt; != &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="font-size:13px"&gt;.contextLoaderStep)&lt;br&gt;
{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;&lt;span style="font-size:13px"&gt;.contextLoaderStep.ExecuteContextLoader(data,&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:13px"&gt;context);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
To:&lt;br&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size:13px"&gt; (&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="font-size:13px"&gt; != &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="font-size:13px"&gt;.contextLoaderStep)&lt;br&gt;
{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;&lt;span style="font-size:13px"&gt;.contextLoaderStep.ExecuteContextLoader(data, &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="font-size:13px"&gt;.contextConfig, context);&lt;br&gt;
}
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>crestall</author><pubDate>Tue, 01 Jul 2008 23:41:20 GMT</pubDate><guid isPermaLink="false">New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException 20080701114120P</guid></item><item><title>New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=27653</link><description>&lt;div style="line-height: normal;"&gt;Thanks, for saving me the debug time! I am using 3.0.1027.0 and that fixed it for me as well.
&lt;/div&gt;</description><author>jmoons</author><pubDate>Mon, 30 Jun 2008 16:50:13 GMT</pubDate><guid isPermaLink="false">New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException 20080630045013P</guid></item><item><title>New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=27653</link><description>&lt;div style="line-height: normal;"&gt;Correction, that was Build&amp;nbsp;3.0.1027.0. Same bug AFAIK.
&lt;/div&gt;</description><author>SirEel</author><pubDate>Tue, 24 Jun 2008 04:53:59 GMT</pubDate><guid isPermaLink="false">New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException 20080624045359A</guid></item><item><title>New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=27653</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I modified FileValidateStep.cs by adding two private fields on line 97:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;XmlNode&lt;/span&gt; validationConfig;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;XmlNode&lt;/span&gt; contextConfig;&lt;br&gt;
&lt;br&gt;
and then changing these lines at 168:&lt;/p&gt;
&lt;p&gt;validationConfig = testConfig.SelectSingleNode(&lt;span style="color:#a31515"&gt;&amp;quot;ValidationStep&amp;quot;&lt;/span&gt;);&lt;br&gt;
contextConfig = testConfig.SelectSingleNode(&lt;span style="color:#a31515"&gt;&amp;quot;ContextLoaderStep&amp;quot;&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
and then changing line 219:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;null&lt;/span&gt; != &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.validationStep)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.validationStep.ExecuteValidation(data, &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.validationConfig, context);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
I also had to add this to XmlValidationStep.cs line 115:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.xPathValidations == &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.xPathValidations = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;Pair&lt;/span&gt;&amp;gt;();&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
Don't know if this is what Kevin had in mind, but it makes FileValidationStep work in Build&amp;nbsp;&lt;span class=CodePlexPageHeader&gt;3.0.1026.0&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>SirEel</author><pubDate>Tue, 24 Jun 2008 04:48:36 GMT</pubDate><guid isPermaLink="false">New Post: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws NullReferenceException 20080624044836A</guid></item><item><title>COMMENTED ISSUE: WSDL import on SOAPHTTPRequestResponseStep</title><link>http://www.codeplex.com/bizunit/WorkItem/View.aspx?WorkItemId=2377</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not sure if this is a bug or not but wanted confirmation.  I have a schema published as a web service using the BizTalk WSE Publishing Wizard.  I&amp;#39;ve created a SOAPHTTPRequestResponseStep to test this but get the error System.InvalidOperationException&amp;#58; Unable to import operation &amp;#39;RatePropertyQuote&amp;#39;. ---&amp;#62;  System.InvalidOperationException&amp;#58; The element &amp;#39;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#58;PropertyOwnersSmallNBRq&amp;#39; is missing.&lt;br /&gt;&lt;br /&gt;If I browse to the WSDL itself the WSDL includes the following&lt;br /&gt;&amp;#60;wsdl&amp;#58;message name&amp;#61;&amp;#34;RatePropertyQuoteMessageIn&amp;#34;&amp;#62;&lt;br /&gt;  &amp;#60;wsdl&amp;#58;part name&amp;#61;&amp;#34;part&amp;#34; xmlns&amp;#58;q1&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#34; element&amp;#61;&amp;#34;q1&amp;#58;PropertyOwnersSmallNBRq&amp;#34;&amp;#62;&lt;br /&gt;    &amp;#60;wsdl&amp;#58;documentation xmlns&amp;#58;wsdl&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;schemas.xmlsoap.org&amp;#47;wsdl&amp;#47;&amp;#34;&amp;#62;BizTalk part types&amp;#58; BizTalk part type &amp;#40;TypeName&amp;#61;&amp;#34;Broker.Polaris.MsgSchemaPropertyOwnersSmallNBRq&amp;#34;, AssemblyName&amp;#61;&amp;#34;EProgramme.Schemas, Version&amp;#61;1.0.0.0, Culture&amp;#61;neutral, PublicKeyToken&amp;#61;b8f6ef39775924f1&amp;#34;, TargetNamespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#34;, RootName&amp;#61;&amp;#34;PropertyOwnersSmallNBRq&amp;#34;&amp;#41;&amp;#60;&amp;#47;wsdl&amp;#58;documentation&amp;#62; &lt;br /&gt;  &amp;#60;&amp;#47;wsdl&amp;#58;part&amp;#62;&lt;br /&gt;&amp;#60;&amp;#47;wsdl&amp;#58;message&amp;#62;&lt;br /&gt;&lt;br /&gt;This mentions the element type that error says can&amp;#39;t be found.  Also in the WSDL is the following&amp;#58;&lt;br /&gt;&lt;br /&gt;- &amp;#60;s&amp;#58;schema targetNamespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;Broker.Quotes&amp;#47;Imports&amp;#34;&amp;#62;&lt;br /&gt;  &amp;#60;s&amp;#58;import schemaLocation&amp;#61;&amp;#34;.&amp;#92;xsd&amp;#92;Broker.Polaris.MsgSchemaPropertyOwnersSmallNBRq_0x6a6dfb34.xsd&amp;#34; namespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#34; &amp;#47;&amp;#62; &lt;br /&gt;  &amp;#60;s&amp;#58;import schemaLocation&amp;#61;&amp;#34;.&amp;#92;xsd&amp;#92;Broker.Polaris.MsgSchemaPropertyOwnersSmallNBRs_0x7f98a7a8.xsd&amp;#34; namespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;4&amp;#47;PropertyOwnersSmallNBRs&amp;#34; &amp;#47;&amp;#62; &lt;br /&gt;  &amp;#60;&amp;#47;s&amp;#58;schema&amp;#62;&lt;br /&gt;  &amp;#60;&amp;#47;wsdl&amp;#58;types&amp;#62;&lt;br /&gt;&lt;br /&gt;The first of these import xsd declarations contain the actual definition of the element mentioned in the error.  The question I therefore have is does BizUnit follow these import definitions to obtain the complete WSDL as it appears that it is not doing this and therefore causing the error I&amp;#39;m seeing.  As far as I&amp;#39;m aware, all web services exposed by the BizTalk WSE publishing wizard declare thier WSDLs in this manner using imports and so if this is the case the BizUnit SOAPHTTPRequestResponseStep cannot be used for testing any BizTalk WSE Adapter published web services.&lt;br /&gt;Comments: ** Comment from web user: tanveerrashid ** &lt;p&gt;There is potentially another solution - using the Discovery Protocol. &lt;/p&gt;&lt;p&gt;A configuration flag could be defined which determines if the regular &amp;#34;wsdlImport.AddServiceDescription&amp;#34;  should be used &amp;#40;for dynamically generating the proxy assembly&amp;#41; or if the discovery protocol should be used.&lt;/p&gt;&lt;p&gt;Code similar to &lt;/p&gt;&lt;p&gt;            if &amp;#40;useDiscoveryProtocol&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                DiscoveryClientProtocol discoveryProtocol &amp;#61; new DiscoveryClientProtocol&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                discoveryProtocol.DiscoverAny&amp;#40;wsdlURI&amp;#41;&amp;#59;&lt;br /&gt;                discoveryProtocol.ResolveAll&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                foreach &amp;#40;DictionaryEntry entry in discoveryProtocol.References&amp;#41;&lt;br /&gt;                &amp;#123;&lt;br /&gt;                    SchemaReference schemaRef &amp;#61; entry.Value as SchemaReference&amp;#59;&lt;br /&gt; &lt;br /&gt;                    if &amp;#40;schemaRef &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        wsdlImport.Schemas.Add&amp;#40;schemaRef.Schema&amp;#41;&amp;#59;&lt;br /&gt; &lt;br /&gt;                    ContractReference contractRef &amp;#61; entry.Value as ContractReference&amp;#59;&lt;br /&gt; &lt;br /&gt;                    if &amp;#40;contractRef &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        wsdlImport.ServiceDescriptions.Add&amp;#40;contractRef.Contract&amp;#41;&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;            else&lt;br /&gt;            &amp;#123;&lt;br /&gt;                wsdlImport.AddServiceDescription&amp;#40;wsdl, null, null&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;/p&gt;</description><author>tanveerrashid</author><pubDate>Sun, 08 Jun 2008 09:48:38 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: WSDL import on SOAPHTTPRequestResponseStep 20080608094838A</guid></item><item><title>COMMENTED ISSUE: WSDL import on SOAPHTTPRequestResponseStep</title><link>http://www.codeplex.com/bizunit/WorkItem/View.aspx?WorkItemId=2377</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not sure if this is a bug or not but wanted confirmation.  I have a schema published as a web service using the BizTalk WSE Publishing Wizard.  I&amp;#39;ve created a SOAPHTTPRequestResponseStep to test this but get the error System.InvalidOperationException&amp;#58; Unable to import operation &amp;#39;RatePropertyQuote&amp;#39;. ---&amp;#62;  System.InvalidOperationException&amp;#58; The element &amp;#39;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#58;PropertyOwnersSmallNBRq&amp;#39; is missing.&lt;br /&gt;&lt;br /&gt;If I browse to the WSDL itself the WSDL includes the following&lt;br /&gt;&amp;#60;wsdl&amp;#58;message name&amp;#61;&amp;#34;RatePropertyQuoteMessageIn&amp;#34;&amp;#62;&lt;br /&gt;  &amp;#60;wsdl&amp;#58;part name&amp;#61;&amp;#34;part&amp;#34; xmlns&amp;#58;q1&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#34; element&amp;#61;&amp;#34;q1&amp;#58;PropertyOwnersSmallNBRq&amp;#34;&amp;#62;&lt;br /&gt;    &amp;#60;wsdl&amp;#58;documentation xmlns&amp;#58;wsdl&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;schemas.xmlsoap.org&amp;#47;wsdl&amp;#47;&amp;#34;&amp;#62;BizTalk part types&amp;#58; BizTalk part type &amp;#40;TypeName&amp;#61;&amp;#34;Broker.Polaris.MsgSchemaPropertyOwnersSmallNBRq&amp;#34;, AssemblyName&amp;#61;&amp;#34;EProgramme.Schemas, Version&amp;#61;1.0.0.0, Culture&amp;#61;neutral, PublicKeyToken&amp;#61;b8f6ef39775924f1&amp;#34;, TargetNamespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#34;, RootName&amp;#61;&amp;#34;PropertyOwnersSmallNBRq&amp;#34;&amp;#41;&amp;#60;&amp;#47;wsdl&amp;#58;documentation&amp;#62; &lt;br /&gt;  &amp;#60;&amp;#47;wsdl&amp;#58;part&amp;#62;&lt;br /&gt;&amp;#60;&amp;#47;wsdl&amp;#58;message&amp;#62;&lt;br /&gt;&lt;br /&gt;This mentions the element type that error says can&amp;#39;t be found.  Also in the WSDL is the following&amp;#58;&lt;br /&gt;&lt;br /&gt;- &amp;#60;s&amp;#58;schema targetNamespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;Broker.Quotes&amp;#47;Imports&amp;#34;&amp;#62;&lt;br /&gt;  &amp;#60;s&amp;#58;import schemaLocation&amp;#61;&amp;#34;.&amp;#92;xsd&amp;#92;Broker.Polaris.MsgSchemaPropertyOwnersSmallNBRq_0x6a6dfb34.xsd&amp;#34; namespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;6&amp;#47;PropertyOwnersSmallNBRq&amp;#34; &amp;#47;&amp;#62; &lt;br /&gt;  &amp;#60;s&amp;#58;import schemaLocation&amp;#61;&amp;#34;.&amp;#92;xsd&amp;#92;Broker.Polaris.MsgSchemaPropertyOwnersSmallNBRs_0x7f98a7a8.xsd&amp;#34; namespace&amp;#61;&amp;#34;http&amp;#58;&amp;#47;&amp;#47;www.polaris-uk.co.uk&amp;#47;Schema&amp;#47;4&amp;#47;PropertyOwnersSmallNBRs&amp;#34; &amp;#47;&amp;#62; &lt;br /&gt;  &amp;#60;&amp;#47;s&amp;#58;schema&amp;#62;&lt;br /&gt;  &amp;#60;&amp;#47;wsdl&amp;#58;types&amp;#62;&lt;br /&gt;&lt;br /&gt;The first of these import xsd declarations contain the actual definition of the element mentioned in the error.  The question I therefore have is does BizUnit follow these import definitions to obtain the complete WSDL as it appears that it is not doing this and therefore causing the error I&amp;#39;m seeing.  As far as I&amp;#39;m aware, all web services exposed by the BizTalk WSE publishing wizard declare thier WSDLs in this manner using imports and so if this is the case the BizUnit SOAPHTTPRequestResponseStep cannot be used for testing any BizTalk WSE Adapter published web services.&lt;br /&gt;Comments: ** Comment from web user: tanveerrashid ** &lt;p&gt;There is potentially another solution - using the Discovery Protocol. A configuration flag could be defined which determines if the regular wsdlImport.AddServiceDescription is used &amp;#40;for dynamically generating the proxy assembly&amp;#41; or if the discovery protocol should be used.&lt;/p&gt;&lt;p&gt;Code similar to &lt;/p&gt;&lt;p&gt;            if &amp;#40;useDiscoProtocol&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                DiscoveryClientProtocol discoProtocol &amp;#61; new DiscoveryClientProtocol&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                discoProtocol.DiscoverAny&amp;#40;wsdlURI&amp;#41;&amp;#59;&lt;br /&gt;                discoProtocol.ResolveAll&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                foreach &amp;#40;DictionaryEntry entry in discoProtocol.References&amp;#41;&lt;br /&gt;                &amp;#123;&lt;br /&gt;                    SchemaReference schemaRef &amp;#61; entry.Value as SchemaReference&amp;#59;&lt;br /&gt; &lt;br /&gt;                    if &amp;#40;schemaRef &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        wsdlImport.Schemas.Add&amp;#40;schemaRef.Schema&amp;#41;&amp;#59;&lt;br /&gt; &lt;br /&gt;                    ContractReference contractRef &amp;#61; entry.Value as ContractReference&amp;#59;&lt;br /&gt; &lt;br /&gt;                    if &amp;#40;contractRef &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        wsdlImport.ServiceDescriptions.Add&amp;#40;contractRef.Contract&amp;#41;&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;            else&lt;br /&gt;            &amp;#123;&lt;br /&gt;                wsdlImport.AddServiceDescription&amp;#40;wsdl, null, null&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;/p&gt;</description><author>tanveerrashid</author><pubDate>Sun, 08 Jun 2008 09:43:28 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: WSDL import on SOAPHTTPRequestResponseStep 20080608094328A</guid></item><item><title>CREATED ISSUE: TestStepBuilder.ContextLoaderStepBuilder - missing?</title><link>http://www.codeplex.com/bizunit/WorkItem/View.aspx?WorkItemId=6314</link><description>It seesm that TestStepBuilder is missing a definition for a ContextLoaderStepBuilder property&amp;#63;&lt;br /&gt;&lt;br /&gt;This similar to the ValidationStep &amp;#38; ValidationStepBuilder properties.&lt;br /&gt;&lt;br /&gt;There is a ContextLoaderStep, but no ContextLoaderStepBuilder defined. &lt;br /&gt;&lt;br /&gt;Could we include a definition for this&amp;#63;&lt;br /&gt;</description><author>tanveerrashid</author><pubDate>Sun, 08 Jun 2008 09:37:18 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: TestStepBuilder.ContextLoaderStepBuilder - missing? 20080608093718A</guid></item><item><title>NEW POST: Property ContextLoaderStep on FileValidateStep is not optional</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=24223</link><description>&lt;div style="line-height: normal;"&gt;I have the same problem and had to recompile bizunit with the same workaround.&lt;br&gt;
&lt;br&gt;
Is this a bug that will get fixed or is there something we don't know?&lt;br&gt;
&lt;br&gt;
Regards&lt;br&gt;
&lt;/div&gt;</description><author>jsilveira</author><pubDate>Tue, 27 May 2008 17:51:07 GMT</pubDate><guid isPermaLink="false">NEW POST: Property ContextLoaderStep on FileValidateStep is not optional 20080527055107P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/bizunit/Wiki/View.aspx?title=Home&amp;version=27</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
&lt;b&gt;BizUnit&lt;/b&gt;
&lt;/h1&gt;The adoption of an automated testing strategy is fundamental in reducing the risk associated with software development projects, it is key to ensuring that you deliver high quality software. Often, the overhead associated with developing automated tests is seen as excessive and a reason to not adopt automated testing.&lt;br /&gt;&lt;br /&gt;BizUnit enables automated tests to be rapidly developed. BizUnit is a flexible and extensible declarative test framework targeted that rapidly enables the automated testing of distributed systems, for example it is widely used to test BizTalk solutions. BizUnit is fully extensible. Its approach is to enable test cases to be constructed from generic reusable test steps, test cases are defined in XML which allows them to be auto-generated and also enables the &amp;#8216;fixing up&amp;#8217; of Url&amp;#8217;s for different environments, e.g. test, staging and production environments. Defining test cases in XML enables test cases to be auto-generated.&lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BizUnit v3.0 - Beta 3&lt;/b&gt; - now available, new features include a &lt;b&gt;BizUnit object&lt;/b&gt;, &lt;b&gt;Excel test case runner&lt;/b&gt; and a new &lt;b&gt;UI automation&lt;/b&gt; test step library&lt;br /&gt; &lt;br /&gt;BizUnit is a framework and as such does not have any dependency on either NUnit of VS Unit Testing, either of these make a great way to drive BizUnit test cases, though equally you could write custom code to do the same.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Test Case Format&lt;/b&gt;
&lt;/h2&gt;A test case can be represented as an Xml document or using the BizUnit object model, it is made up of three stages, &lt;b&gt;&lt;i&gt;test setup&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;test execution&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;test cleanup&lt;/i&gt;&lt;/b&gt;, the cleanup stage is always executed (even if the main execution stage fails) and intended to leave the platform in the same state that it started.&lt;br /&gt;Each stage may consist of zero or more test steps, test steps are in general autonomous, state can be flowed between them if required using the ‘context’ object that is passed to each test step by the framework.&lt;br /&gt;BizUnit also has the notion of TestGroupSetup and TestGroupTearDown, these are test cases that are executed at the beginning and end of a suite of unit tests.&lt;br /&gt; &lt;br /&gt;The diagram below illustrates the format of a test case.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=bizunit&amp;amp;DownloadId=7771" alt="TestCase.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;In addition to test steps, BizUnit has the notion of &lt;b&gt;&lt;i&gt;validation&lt;/i&gt;&lt;/b&gt; steps and &lt;b&gt;&lt;i&gt;context loader&lt;/i&gt;&lt;/b&gt; steps. These can be thought of as sub-steps and can in general be independantly executed from any test step. For example, an MSMQ-read step might be used to read and validate both Xml and Flat File data from a queue, the same step can be used with both the RegExValidationStep and the XmlValidationStep to validate the data read.&lt;br /&gt; &lt;br /&gt;A test step within a test case can be marked with the attribute - &lt;b&gt;&lt;i&gt;runConcurrently&lt;/i&gt;&lt;/b&gt; which causes subsequent test steps to be started before it has completed. In addition test steps maybe marked with the attribute - &lt;b&gt;&lt;i&gt;failOnError&lt;/i&gt;&lt;/b&gt;, setting it to false cause BizUnit to ignore a failure of that test step, this is particularly useful for the setup and cleanup stages of test cases.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Lets look at an Example Scenario...&lt;/b&gt;
&lt;/h2&gt;BizUnit takes a black box approach to testing solutions, lets look at the BizTalk scenario below, a BizTalk solution receives a request-response message over HTTP, the message is routed to an Orchestration which, sends a message to MSMQ and another to a FILE drop, the Orchestration waits for a FILE to be received, after which the Orchestration sends the response back to the waiting HTTP client. The solution also uses BAM, writing business data to the BAM database.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=bizunit&amp;amp;DownloadId=7772" alt="BizUnitExample.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;In order to test this scenario, a BizUnit test case is defined that has 5 test steps:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;The HttpRequestResponseStep sends the request to the two-way receive port and waits for the response. This step is executed concurrently so that the other test steps may execute whilst it waiting for the response &lt;/li&gt;&lt;li&gt;The MSMQReadStep waits for a message to appear on an MSMQ queue. &lt;/li&gt;&lt;ul&gt;
&lt;li&gt;When it reads the message it uses the XmlValidationStep to perform schema validation and also execute a number of XPath expression to ensure the message contains the correct data &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The FileValidateStep waits for a FILE to be written to a given directory&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;When it reads the FILE it validates the data using the RegExValidationStep validation step since the FILE picked up was a flat file format &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The FileCreateStep creates a new FILE in the specified directory containing the data that the backend system would typically create. This allows the Orchestration to complete and send the response back to the waiting HttpRequestResponseStep step &lt;/li&gt;&lt;li&gt;Finally, DBQueryStep is used to check that all of the BAM data has been successfully written to the BAMPrimaryImportDB&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Test Steps&lt;/b&gt;
&lt;/h2&gt;A test step is a .NET class which implements the &lt;b&gt;&lt;i&gt;ITestStep&lt;/i&gt;&lt;/b&gt; interface:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public interface ITestStep
{
    void Execute(XmlNode testConfig, Context context);
}
&lt;/pre&gt; &lt;br /&gt;BizUnit will create and execute the test steps as dictated by the Xml test case. The test case will list the steps that need to be excuted in each stage of the test. The example below will cause BizUnit to create the &lt;i&gt;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep&lt;/i&gt;. BizUnit uses the &lt;b&gt;&lt;i&gt;assemblyPath&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;typeName&lt;/i&gt;&lt;/b&gt; to load and create the type:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep&amp;quot;&amp;gt;
    ...
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Executing Steps Concurrently
&lt;/h3&gt;Test steps can be maked to execute concurrently by decorating them with the &lt;b&gt;&lt;i&gt;runConcurrently&lt;/i&gt;&lt;/b&gt; attribute:&lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.HttpRequestResponseStep&amp;quot; runConcurrently=&amp;quot;true&amp;quot;&amp;gt;
    ...
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Reading Configuration from Context
&lt;/h3&gt;BizUnit enables state to be flowed between test steps using the Context object, subsequent steps may read configuration from the Context object which was written by a previous test step, this is acheived using the &lt;b&gt;&lt;i&gt;takeFromCtx&lt;/i&gt;&lt;/b&gt; attribute within a steps configuration. For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.HttpPostStep&amp;quot;&amp;gt;
    &amp;lt;SourcePath&amp;gt;.\TestData\InDoc1.xml&amp;lt;/SourcePath&amp;gt;    
    &amp;lt;DestinationUrl takeFromCtx=&amp;quot;HTTPDest&amp;quot;&amp;gt;http://localhost/TestFrameworkDemo/BTSHTTPReceive.dll&amp;lt;/DestinationUrl&amp;gt;
    &amp;lt;RequestTimeout&amp;gt;60000&amp;lt;/RequestTimeout&amp;gt;
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
&lt;b&gt;Wild Cards&lt;/b&gt;
&lt;/h3&gt;BizUnit supports wild card for reading configuration, the following wild cards are supported&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;%DateTime%&lt;/i&gt;&lt;/b&gt; - will replace the wild card with the current date time in the format HHmmss-ddMMyyyy &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;%ServerName%&lt;/i&gt;&lt;/b&gt; - will replace the wild card with the name of the server BizUnit is being executed on &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;%Guid%&lt;/i&gt;&lt;/b&gt; - will be replaced by a new Guid&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;For example, for the test step configuration below:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep&amp;quot;&amp;gt;
    &amp;lt;SourcePath&amp;gt;..\..\..\TestData\InDoc1.xml&amp;lt;/SourcePath&amp;gt;         
    &amp;lt;CreationPath&amp;gt;..\..\..\Rec_03\TransactionId_%Guid%_%ServerName%.xml&amp;lt;/CreationPath&amp;gt;
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;CreationPath becomes &lt;i&gt;&amp;quot;..\..\..\Rec&lt;/i&gt;03\TransactionId&lt;i&gt;12345678-D6AB-4aa9-A772-938972E3FD51&lt;/i&gt;ZEUS001.xml&amp;quot;_&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Validation Steps
&lt;/h2&gt;BizUnit supports the notion of validation steps which may be nested within test steps which support validation. This means that an MSMQ read step may use an XML validation step or a regular expression validation step to validate the data that it receives. Validation steps need to implement the &lt;b&gt;&lt;i&gt;IValidationStep&lt;/i&gt;&lt;/b&gt; interface. &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public interface IValidationStep
{
    void ExecuteValidation(Stream data, XmlNode validatorConfig, Context context);
}
&lt;/pre&gt; &lt;br /&gt;A test step may use the Context object utilities to execute the appropriate validation step as shown below:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public void Execute(XmlNode testConfig, Context context)
{
    XmlNode validationConfig = testConfig.SelectSingleNode(&amp;quot;ValidationStep&amp;quot;);
    MemoryStream data = null;
 
    ...
 
    context.ExecuteValidator( data, validationConfig );
}
&lt;/pre&gt; &lt;br /&gt;The test step snippet below illustrates how a validation step is embeded in a file read step:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileValidateStep&amp;quot;&amp;gt;
    &amp;lt;Timeout&amp;gt;3000&amp;lt;/Timeout&amp;gt;
    &amp;lt;Directory&amp;gt;..\..\..\Rec_03\&amp;lt;/Directory&amp;gt;
    &amp;lt;SearchPattern&amp;gt;TransactionId_*.xml&amp;lt;/SearchPattern&amp;gt;
    &amp;lt;DeleteFile&amp;gt;true&amp;lt;/DeleteFile&amp;gt;
			
    &amp;lt;ValidationStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.XmlValidationStep&amp;quot;&amp;gt;
        &amp;lt;XmlSchemaPath&amp;gt;..\..\..\TestData\PurchaseOrder.xsd&amp;lt;/XmlSchemaPath&amp;gt;
        &amp;lt;XmlSchemaNameSpace&amp;gt;http://SendMail.PurchaseOrder&amp;lt;/XmlSchemaNameSpace&amp;gt;
        &amp;lt;XPathList&amp;gt;
            &amp;lt;XPathValidation query=
                &amp;quot;/*[local-name()='PurchaseOrder' and namespace-uri()='http://SendMail.PurchaseOrder']
                /*[local-name()='PONumber' and namespace-uri()='']&amp;quot;&amp;gt;PONumber_0&amp;lt;/XPathValidation&amp;gt;
        &amp;lt;/XPathList&amp;gt;
    &amp;lt;/ValidationStep&amp;gt;			
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Context Loader Steps
&lt;/h2&gt;Similarly, BizUnit supports context loader steps, which are responsible for loading data into the BizUnit context. These types of need to implement the &lt;b&gt;&lt;i&gt;IContextLoaderStep&lt;/i&gt;&lt;/b&gt; interface as shown below:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public interface IContextLoaderStep
{
    void ExecuteContextLoader(Stream data, XmlNode contextConfig, Context context);
}
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Getting Started&lt;/b&gt;
&lt;/h2&gt;The best way to get started is to download the latest version, install it and then take a look at the SDK samples. All the source is currently included, so feel free to take a closer look at the code. All the test steps along with the framework itself are documented in the .CHM that is installed.&lt;br /&gt; &lt;br /&gt;Finally, my apologies for the shameless plug :-), but Chapter 10 of &lt;b&gt;&lt;i&gt;&lt;a href="http://www.amazon.com/Professional-BizTalk-Server-Darren-Jefford/dp/0470046422/ref=pd_bbs_sr_4/103-9081803-2555041?ie=UTF8&amp;amp;s=books&amp;amp;qid=1172915706&amp;amp;sr=8-4" class="externalLink"&gt;Professional BizTalk Server 2006&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; book which I co-authored discusses in more detail how BizUnit may be used as an integral part of your development process, and how it may be used to drive stress and performance testing. &lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=bizunit&amp;amp;DownloadId=11374" alt="BizTalk2006Book.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Acknowledgments&lt;/b&gt;
&lt;/h2&gt;I'd like to thanks the follwing people who have contributed to BizUnit in some way, either by donating test steps, identifying bugs, or by providing requirements which have subsequently been implemented. I may have missed some people off, if so, it's not intensional, please drop me a mail to remind me:&lt;br /&gt; &lt;br /&gt;Dharshana Kalahejagoda &lt;br /&gt;Jon Fancey&lt;br /&gt;Isaac Young&lt;br /&gt;Mike Becker&lt;br /&gt;Tanveer Rashid&lt;br /&gt;Young Jun Hong&lt;br /&gt;Dave Regan&lt;br /&gt;Ian Cross&lt;br /&gt;Greg Beach&lt;br /&gt;Daren Jefford&lt;br /&gt;Kevin Purcell&lt;br /&gt;Karina Apostolides&lt;br /&gt;Jon Bonnick&lt;br /&gt;Brian Milburn&lt;br /&gt;Rahmatullah Khan&lt;br /&gt; &lt;br /&gt;Enjoy!&lt;br /&gt;
&lt;/div&gt;</description><author>kevinsmi</author><pubDate>Mon, 19 May 2008 22:06:14 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080519100614P</guid></item><item><title>UPDATED RELEASE: 3.0.1027.0 - Beta 3</title><link>http://www.codeplex.com/bizunit/Release/ProjectReleases.aspx?ReleaseId=13578</link><description>&amp;#42;BizUnit v3.0&amp;#42; - _Beta 3 Release_&lt;br /&gt;&lt;br /&gt;This is a major release with some big changes&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42;BizUnit Object Model&amp;#42; - firstly BizUnit introduces an object model to enable BizUnit tests to be created programatically. This primarily targets the ability to create test matrix&amp;#39;s in Excel and have BizUnit run the spreadsheet directly - no need to serialise out Xml. The SDK has a sample spreadsheet and a generic spreadsheet parser.&lt;br /&gt;&lt;br /&gt;&amp;#42;UI Automation Testing&amp;#42; - another powerful feature is a new test step library which enables UI&amp;#39;s to be tested by BizUnit, this enables seemless integration of server side and client side test code, truely powerful &amp;#58;-&amp;#41;. Special thanks to my colleague Dharshana Kalahejagoda for delivering this excellent functionality.&lt;br /&gt;&lt;br /&gt;&amp;#42;Note&amp;#42;&amp;#58; this is still a beta release, not all of the tests steps have been enhanced with the new object model and there are still some know doc issues&lt;br /&gt;&lt;br /&gt;Beta 3 fixes some know bugs in previous v3 Beta releases, such as test case false-positives when using the OM and also the default value for failOnError is consistent with the XML tests, i.e. defaults to true.&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;&lt;br /&gt;&amp;#42;Kevin&amp;#42;</description><author></author><pubDate>Mon, 19 May 2008 21:58:18 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: 3.0.1027.0 - Beta 3 20080519095818P</guid></item><item><title>NEW POST: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws Null...</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=27653</link><description>&lt;div style="line-height: normal;"&gt;I'm trying to run a simple proof-of-concept using BizUnit 3.0.1026, and XmlValidationStep.ExecuteValidation(Stream data, Context context) is blowing up. Apparently, this.xPathValidations is only initialized in XmlValidationStep.ExecuteValidation(Stream data, XmlNode validatorConfig, Context context), but that method isn't being called.&lt;br&gt;
&lt;br&gt;
Here's the ValidationStep XML:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-family:courier new"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ValidationStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;BizUnit.XmlValidationStep&amp;quot;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XmlSchemaPath&amp;gt;C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Schemas\Member.xsd&amp;lt;/XmlSchemaPath&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XmlSchemaNameSpace&amp;gt;http://BT_AutoTestingDemo.Member&amp;lt;/XmlSchemaNameSpace&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathValidation query=&amp;quot;//Member/FirstName&amp;quot;&amp;gt;Fred&amp;lt;/XPathValidation&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathValidation query=&amp;quot;//Member/LastName&amp;quot;&amp;gt;Foobar&amp;lt;/XPathValidation&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/XPathList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ValidationStep&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
And here's what's being written to Console.Out:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-family:courier new"&gt;Info: Adding context property: BizUnitTestCaseName, value: GoodClient&lt;br&gt;
&amp;nbsp;&lt;br&gt;
-------------------------------------------------------------------------------&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S T A R T&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Test: GoodClient started @ 16:25:59.449 13/05/2008 by FHP\sched01&lt;br&gt;
-------------------------------------------------------------------------------&lt;br&gt;
Info: Adding context property: BizUnitTestCaseStartTime, value: 5/13/2008 4:25:59 PM&lt;br&gt;
Info: Adding context property: testData, value: C:\play\BT_AutoTestingDemo\DemoBizUnitTests\bin\Debug\..\..\TestData\ClientToMember_GoodClient_Input.xml&lt;br&gt;
Info: Adding context property: inputPort, value: C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\IncomingClient\GoodClient_input.xml&lt;br&gt;
Info: Adding context property: outputPort, value: C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\OutgoingGreeting\&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Setup Test: GoodClient&lt;br&gt;
&lt;br&gt;
Step: BizUnit.FileDeleteMultipleStep started @ 16:25:59.464 13/05/2008, failOnError = True&lt;br&gt;
Info: 1 files were found matching the File Mask: &amp;quot;*.xml&amp;quot; in the directory: &amp;quot;C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\OutgoingGreeting\&amp;quot;&lt;br&gt;
Info: File: &amp;quot;C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\OutgoingGreeting\{ACFE6A53-F40D-44B6-B6C3-F7CBBA856C4C}.xml&amp;quot; was successfully deleted.&lt;br&gt;
Step: BizUnit.FileDeleteMultipleStep ended @ 16:25:59.464 13/05/2008&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Execute Test: GoodClient&lt;br&gt;
&lt;br&gt;
Step: BizUnit.FileCreateStep started @ 16:25:59.464 13/05/2008, failOnError = True&lt;br&gt;
Info: FileCreateStep about to copy the data from File: C:\play\BT_AutoTestingDemo\DemoBizUnitTests\bin\Debug\..\..\TestData\ClientToMember_GoodClient_Input.xml to the File: C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\IncomingClient\GoodClient_input.xml&lt;br&gt;
Step: BizUnit.FileCreateStep ended @ 16:25:59.480 13/05/2008&lt;br&gt;
&lt;br&gt;
Step: BizUnit.FileValidateStep started @ 16:25:59.480 13/05/2008, failOnError = True&lt;br&gt;
Info: Searching for files in: &amp;quot;C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\OutgoingGreeting\*.xml&amp;quot;&lt;br&gt;
Info: 1 fies were found at : &amp;quot;C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\OutgoingGreeting\*.xml&amp;quot;&lt;br&gt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br&gt;
Data: Loaded FILE: C:\play\BT_AutoTestingDemo\BT_AutoTestingDemo\Ports\OutgoingGreeting\{EF6ECC08-25F5-4416-83FD-75C5DDA93C57}.xml&lt;br&gt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br&gt;
&amp;lt;ns0:Member xmlns:ns0=&amp;quot;http://BT_AutoTestingDemo.Member&amp;quot;&amp;gt;&amp;lt;FirstName&amp;gt;Frank&amp;lt;/FirstName&amp;gt;&amp;lt;LastName&amp;gt;Success&amp;lt;/LastName&amp;gt;&amp;lt;EmailAddress&amp;gt;frank@example.com&amp;lt;/EmailAddress&amp;gt;&amp;lt;/ns0:Member&amp;gt;&lt;br&gt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br&gt;
*******************************************************************************&lt;br&gt;
Error: Exception caught!&lt;br&gt;
System.NullReferenceException: Object reference not set to an instance of an object.&lt;br&gt;
&amp;nbsp;&amp;nbsp; at BizUnit.XmlValidationStep.ExecuteValidation(Stream data, Context context) in C:\play\BT_AutoTestingDemo\BizUnit 3.0\Src\BizUnit\ValidationSteps\XmlValidationStep.cs:line 151&lt;br&gt;
&amp;nbsp;&amp;nbsp; at BizUnit.FileValidateStep.Execute(Context context) in C:\play\BT_AutoTestingDemo\BizUnit 3.0\Src\BizUnit\TestSteps\FileValidateStep.cs:line 211&lt;br&gt;
&amp;nbsp;&amp;nbsp; at BizUnit.FileValidateStep.Execute(XmlNode testConfig, Context context) in C:\play\BT_AutoTestingDemo\BizUnit 3.0\Src\BizUnit\TestSteps\FileValidateStep.cs:line 162&lt;br&gt;
&amp;nbsp;&amp;nbsp; at BizUnit.BizUnitOM.BizUnitTestStepWrapper.Execute(Context ctx) in C:\play\BT_AutoTestingDemo\BizUnit 3.0\Src\BizUnit\BizUnitOM\BizUnitTestStepWrapper.cs:line 117&lt;br&gt;
&amp;nbsp;&amp;nbsp; at BizUnit.BizUnit.ExecuteTestStep(BizUnitTestStepWrapper stepWrapper) in C:\play\BT_AutoTestingDemo\BizUnit 3.0\Src\BizUnit\BizUnit.cs:line 1038&lt;br&gt;
*******************************************************************************&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Tear Down Test: GoodClient&lt;br&gt;
-------------------------------------------------------------------------------&lt;br&gt;
Test: GoodClient ended @ 16:26:00.105 13/05/2008&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ****** F A I L ******&lt;br&gt;
&lt;br&gt;
-------------------------------------------------------------------------------&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
Help?&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>edschweppe</author><pubDate>Tue, 13 May 2008 20:31:10 GMT</pubDate><guid isPermaLink="false">NEW POST: BizUnit 3.0.1026.0 (3.0 Beta 2): XmlValidationStep.ExecuteValidation(Stream, Context) throws Null... 20080513083110P</guid></item><item><title>NEW POST: Bug in BizUnit 3.0</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=23490</link><description>&lt;div style="line-height: normal;"&gt;&lt;br&gt;
&lt;div style="border-style:dotted none;border-color:rgb(170, 170, 170) -moz-use-text-color;border-width:0.1em medium;margin:1em 0em 2.5em 3em;padding:0.2em;font-style:italic"&gt;&lt;br&gt;
kevinsmi wrote:&lt;br&gt;
This is now fixed in 3.0.1026.0&lt;br&gt;
&lt;br&gt;
Note the src is in the MSI, don't sync from codeplex, just download the .MSI&lt;br&gt;
&lt;br&gt;
thanks.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Kevin&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
Ah, &lt;strong&gt;that's&lt;/strong&gt; where to get the code. Thanks for the info (and thanks for the fix!)&lt;br&gt;
&lt;/div&gt;</description><author>edschweppe</author><pubDate>Tue, 13 May 2008 15:09:28 GMT</pubDate><guid isPermaLink="false">NEW POST: Bug in BizUnit 3.0 20080513030928P</guid></item><item><title>NEW POST: Can we check Orchestrational logic with BizUnit?</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=23298</link><description>&lt;div style="line-height: normal;"&gt;Yes, thats exactly right. In general the approach I've always taken is to vary the inputs into the Orch in order to ensure that all of the execution paths have been exercised. Using BizUnit in conjuction with the Orchestration Profiler to check your code coverage metrics: &lt;a href="http://www.codeplex.com/BiztalkOrcProfiler"&gt;http://www.codeplex.com/BiztalkOrcProfiler&lt;/a&gt;. Also, you can use BizTalk to validate any side effects form Orchs and indeed the rest of the solution, for example did all of your BAM data get correctly recorded in the PrimaryImportDB.&lt;br&gt;
&lt;br&gt;
Thanks,&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Kevin&lt;/em&gt;&lt;/strong&gt; 
&lt;/div&gt;</description><author>kevinsmi</author><pubDate>Sun, 11 May 2008 21:35:24 GMT</pubDate><guid isPermaLink="false">NEW POST: Can we check Orchestrational logic with BizUnit? 20080511093524P</guid></item><item><title>NEW POST: Can we check Orchestrational logic with BizUnit?</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=23298</link><description>&lt;div style="line-height: normal;"&gt;&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;span style="line-height:115%"&gt;&lt;span style="font-family:calibri"&gt;Hi,&lt;/span&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;span style="line-height:115%"&gt;&lt;span style="font-family:calibri"&gt; I think you have to think of the orchestration as a black box, so you have to use BizUnit to make the action (the input data to fire the orchestration) and then you have to use BizUnit again to test the reaction impact on (DB, Files,  ERP, etc)&lt;/span&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;span style="line-height:115%"&gt;&lt;span style="font-family:calibri"&gt;To realized that, you have to use multiple test cases.&lt;/span&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;span style="line-height:115%"&gt;&lt;span style="font-family:calibri"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;span style="line-height:115%"&gt;&lt;span style="font-family:calibri"&gt;Regards,&lt;br&gt;
Firas&lt;/span&gt;&lt;/span&gt;
&lt;p style="margin:0in 0in 10pt"&gt;&lt;span&gt;&lt;span style="line-height:115%"&gt;&lt;span style="font-family:calibri"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>Data</author><pubDate>Sun, 11 May 2008 08:33:17 GMT</pubDate><guid isPermaLink="false">NEW POST: Can we check Orchestrational logic with BizUnit? 20080511083317A</guid></item><item><title>COMMENTED ISSUE: Global Variable</title><link>http://www.codeplex.com/bizunit/WorkItem/View.aspx?WorkItemId=6109</link><description>Add the ability to save and retrieve global variables that could be used by any test case during the test session. I&amp;#8217;m thinking of this because I think we should divide the full scenario test into many test cases to be run later by BizUnit framework in sequence. That will be easier to modify, enhance, and track the errors.&lt;br /&gt;&lt;br /&gt;Let&amp;#8217;s assume that we have a very complicated scenario to test, it will be better to divide that full scenario testing into many test cases, like the following&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; ST001_Initialize&lt;br /&gt;&amp;#42; ST002_SetupEnv&lt;br /&gt;&amp;#42; ST003_CheckBusinessOperation1&lt;br /&gt;&amp;#42; ST004_CheckBusinessOperation2&lt;br /&gt;&amp;#42; ST005_CheckBusinessOperation3&lt;br /&gt;&amp;#42; ST006_CheckBusinessOperation4&lt;br /&gt;&amp;#42; ST007_CheckBusinessOperation5&lt;br /&gt;&amp;#42; ST008_CheckBusinessOperation6&lt;br /&gt;&amp;#42; ST009_CheckBusinessOperation7&lt;br /&gt;&amp;#42; ST010_Finalize&lt;br /&gt;&amp;#42; ST011_PrintTestDuration&lt;br /&gt;&lt;br /&gt;Let&amp;#8217;s assume that we are using a URI like folder path in test steps across the divided test cases. So it will be better to set that global variable to be used later by other test cases.&lt;br /&gt;&lt;br /&gt;I&amp;#8217;m suggesting to add global variable in initialization file, in the following format.&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#60;TestStep assemblyPath&amp;#61;&amp;#34;&amp;#34;&lt;br /&gt;typeName&amp;#61;&amp;#34;namespace.AddGlobalVariable&amp;#34;&lt;br /&gt;description&amp;#61;&amp;#34;Set Start Time&amp;#34;&lt;br /&gt;failOnError&amp;#61;&amp;#34;False&amp;#34;&amp;#62;&lt;br /&gt;   &amp;#60;GlobaleVaiable&amp;#62;&lt;br /&gt;     &amp;#60;add name&amp;#61;&amp;#8221;Archive.FolderPath&amp;#8221;&amp;#62;c&amp;#58;&amp;#92;MySystem&amp;#92;FileDrops&amp;#92;Archives&amp;#60;&amp;#47;add&amp;#62;&lt;br /&gt;     &amp;#60;add name&amp;#61;&amp;#8221;Operation.SummaryReport&amp;#8221;&amp;#62;c&amp;#58;&amp;#92;MySystem&amp;#92;FileDrops&amp;#92;Summary&amp;#60;&amp;#47;add&amp;#62;&lt;br /&gt;     &amp;#60;add name&amp;#61;&amp;#8221;DatabaseConnectionStr&amp;#8221;&amp;#62;ConnectionString&amp;#60;&amp;#47;add&amp;#62;&lt;br /&gt;  &amp;#60;&amp;#47;GlobaleVaiable&amp;#62;&lt;br /&gt;    &amp;#60;&amp;#47;TestStep&amp;#62;&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To be used later as&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#60;TestStep &lt;br /&gt;assemblyPath&amp;#61;&amp;#34; &lt;br /&gt;typeName&amp;#61;&amp;#34;BizUnit.BizTalkApplicationFramework.BizUnit.WaitOnFileStep&amp;#34;&amp;#62;&lt;br /&gt;&amp;#60;Path&amp;#62;&amp;#37;Archive.FolderPath&amp;#37;&amp;#60;&amp;#47;Path&amp;#62; &amp;#47;&amp;#47; Using Global variable&lt;br /&gt;&amp;#60;FileFilter&amp;#62;&amp;#42;.xml&amp;#60;&amp;#47;FileFilter&amp;#62;&lt;br /&gt;&amp;#60;TimeOut&amp;#62;70000&amp;#60;&amp;#47;TimeOut&amp;#62;&lt;br /&gt;&amp;#60;&amp;#47;TestStep&amp;#62;&lt;br /&gt;&amp;#125;&lt;br /&gt;Comments: ** Comment from web user: Data ** &lt;p&gt;Hi Kevin,&lt;/p&gt;&lt;p&gt;  Context object is great and it solves the global variable functionality, that will means that I have to maintain the test context object in .net code, where I think it will be much better to maintain the global variables using the native syntax of BizUnit &amp;#40;xml&amp;#41;.&lt;/p&gt;&lt;p&gt;Thanks,&lt;br /&gt;Firas&lt;br /&gt;&lt;/p&gt;</description><author>Data</author><pubDate>Sun, 11 May 2008 07:50:38 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Global Variable 20080511075038A</guid></item><item><title>NEW POST: Automate LoadGen with Bizunit</title><link>http://www.codeplex.com/bizunit/Thread/View.aspx?ThreadId=24254</link><description>&lt;div class="wikidoc"&gt;
Whats the call stack? and which version of BizUnit are you using?&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Kevin&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>kevinsmi</author><pubDate>Thu, 08 May 2008 10:34:24 GMT</pubDate><guid isPermaLink="false">NEW POST: Automate LoadGen with Bizunit 20080508103424A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/bizunit/Wiki/View.aspx?title=Home&amp;version=26</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
&lt;b&gt;BizUnit&lt;/b&gt;
&lt;/h1&gt;The adoption of an automated testing strategy is fundamental in reducing the risk associated with software development projects, it is key to ensuring that you deliver high quality software. Often, the overhead associated with developing automated tests is seen as excessive and a reason to not adopt automated testing.&lt;br /&gt;&lt;br /&gt;BizUnit enables automated tests to be rapidly developed. BizUnit is a flexible and extensible declarative test framework targeted that rapidly enables the automated testing of distributed systems, for example it is widely used to test BizTalk solutions. BizUnit is fully extensible. Its approach is to enable test cases to be constructed from generic reusable test steps, test cases are defined in XML which allows them to be auto-generated and also enables the &amp;#8216;fixing up&amp;#8217; of Url&amp;#8217;s for different environments, e.g. test, staging and production environments. Defining test cases in XML enables test cases to be auto-generated.&lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BizUnit v3.0 - Beta 2&lt;/b&gt; - now available, new features include a &lt;b&gt;BizUnit object&lt;/b&gt;, &lt;b&gt;Excel test case runner&lt;/b&gt; and a new &lt;b&gt;UI automation&lt;/b&gt; test step library&lt;br /&gt; &lt;br /&gt;BizUnit is a framework and as such does not have any dependency on either NUnit of VS Unit Testing, either of these make a great way to drive BizUnit test cases, though equally you could write custom code to do the same.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Test Case Format&lt;/b&gt;
&lt;/h2&gt;A test case can be represented as an Xml document or using the BizUnit object model, it is made up of three stages, &lt;b&gt;&lt;i&gt;test setup&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;test execution&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;test cleanup&lt;/i&gt;&lt;/b&gt;, the cleanup stage is always executed (even if the main execution stage fails) and intended to leave the platform in the same state that it started.&lt;br /&gt;Each stage may consist of zero or more test steps, test steps are in general autonomous, state can be flowed between them if required using the ‘context’ object that is passed to each test step by the framework.&lt;br /&gt;BizUnit also has the notion of TestGroupSetup and TestGroupTearDown, these are test cases that are executed at the beginning and end of a suite of unit tests.&lt;br /&gt; &lt;br /&gt;The diagram below illustrates the format of a test case.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=bizunit&amp;amp;DownloadId=7771" alt="TestCase.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;In addition to test steps, BizUnit has the notion of &lt;b&gt;&lt;i&gt;validation&lt;/i&gt;&lt;/b&gt; steps and &lt;b&gt;&lt;i&gt;context loader&lt;/i&gt;&lt;/b&gt; steps. These can be thought of as sub-steps and can in general be independantly executed from any test step. For example, an MSMQ-read step might be used to read and validate both Xml and Flat File data from a queue, the same step can be used with both the RegExValidationStep and the XmlValidationStep to validate the data read.&lt;br /&gt; &lt;br /&gt;A test step within a test case can be marked with the attribute - &lt;b&gt;&lt;i&gt;runConcurrently&lt;/i&gt;&lt;/b&gt; which causes subsequent test steps to be started before it has completed. In addition test steps maybe marked with the attribute - &lt;b&gt;&lt;i&gt;failOnError&lt;/i&gt;&lt;/b&gt;, setting it to false cause BizUnit to ignore a failure of that test step, this is particularly useful for the setup and cleanup stages of test cases.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Lets look at an Example Scenario...&lt;/b&gt;
&lt;/h2&gt;BizUnit takes a black box approach to testing solutions, lets look at the BizTalk scenario below, a BizTalk solution receives a request-response message over HTTP, the message is routed to an Orchestration which, sends a message to MSMQ and another to a FILE drop, the Orchestration waits for a FILE to be received, after which the Orchestration sends the response back to the waiting HTTP client. The solution also uses BAM, writing business data to the BAM database.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=bizunit&amp;amp;DownloadId=7772" alt="BizUnitExample.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;In order to test this scenario, a BizUnit test case is defined that has 5 test steps:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;The HttpRequestResponseStep sends the request to the two-way receive port and waits for the response. This step is executed concurrently so that the other test steps may execute whilst it waiting for the response &lt;/li&gt;&lt;li&gt;The MSMQReadStep waits for a message to appear on an MSMQ queue. &lt;/li&gt;&lt;ul&gt;
&lt;li&gt;When it reads the message it uses the XmlValidationStep to perform schema validation and also execute a number of XPath expression to ensure the message contains the correct data &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The FileValidateStep waits for a FILE to be written to a given directory&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;When it reads the FILE it validates the data using the RegExValidationStep validation step since the FILE picked up was a flat file format &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;The FileCreateStep creates a new FILE in the specified directory containing the data that the backend system would typically create. This allows the Orchestration to complete and send the response back to the waiting HttpRequestResponseStep step &lt;/li&gt;&lt;li&gt;Finally, DBQueryStep is used to check that all of the BAM data has been successfully written to the BAMPrimaryImportDB&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Test Steps&lt;/b&gt;
&lt;/h2&gt;A test step is a .NET class which implements the &lt;b&gt;&lt;i&gt;ITestStep&lt;/i&gt;&lt;/b&gt; interface:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public interface ITestStep
{
    void Execute(XmlNode testConfig, Context context);
}
&lt;/pre&gt; &lt;br /&gt;BizUnit will create and execute the test steps as dictated by the Xml test case. The test case will list the steps that need to be excuted in each stage of the test. The example below will cause BizUnit to create the &lt;i&gt;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep&lt;/i&gt;. BizUnit uses the &lt;b&gt;&lt;i&gt;assemblyPath&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;typeName&lt;/i&gt;&lt;/b&gt; to load and create the type:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep&amp;quot;&amp;gt;
    ...
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Executing Steps Concurrently
&lt;/h3&gt;Test steps can be maked to execute concurrently by decorating them with the &lt;b&gt;&lt;i&gt;runConcurrently&lt;/i&gt;&lt;/b&gt; attribute:&lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.HttpRequestResponseStep&amp;quot; runConcurrently=&amp;quot;true&amp;quot;&amp;gt;
    ...
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Reading Configuration from Context
&lt;/h3&gt;BizUnit enables state to be flowed between test steps using the Context object, subsequent steps may read configuration from the Context object which was written by a previous test step, this is acheived using the &lt;b&gt;&lt;i&gt;takeFromCtx&lt;/i&gt;&lt;/b&gt; attribute within a steps configuration. For example:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.HttpPostStep&amp;quot;&amp;gt;
    &amp;lt;SourcePath&amp;gt;.\TestData\InDoc1.xml&amp;lt;/SourcePath&amp;gt;    
    &amp;lt;DestinationUrl takeFromCtx=&amp;quot;HTTPDest&amp;quot;&amp;gt;http://localhost/TestFrameworkDemo/BTSHTTPReceive.dll&amp;lt;/DestinationUrl&amp;gt;
    &amp;lt;RequestTimeout&amp;gt;60000&amp;lt;/RequestTimeout&amp;gt;
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
&lt;b&gt;Wild Cards&lt;/b&gt;
&lt;/h3&gt;BizUnit supports wild card for reading configuration, the following wild cards are supported&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;%DateTime%&lt;/i&gt;&lt;/b&gt; - will replace the wild card with the current date time in the format HHmmss-ddMMyyyy &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;%ServerName%&lt;/i&gt;&lt;/b&gt; - will replace the wild card with the name of the server BizUnit is being executed on &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;%Guid%&lt;/i&gt;&lt;/b&gt; - will be replaced by a new Guid&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;For example, for the test step configuration below:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep&amp;quot;&amp;gt;
    &amp;lt;SourcePath&amp;gt;..\..\..\TestData\InDoc1.xml&amp;lt;/SourcePath&amp;gt;         
    &amp;lt;CreationPath&amp;gt;..\..\..\Rec_03\TransactionId_%Guid%_%ServerName%.xml&amp;lt;/CreationPath&amp;gt;
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;CreationPath becomes &lt;i&gt;&amp;quot;..\..\..\Rec&lt;/i&gt;03\TransactionId&lt;i&gt;12345678-D6AB-4aa9-A772-938972E3FD51&lt;/i&gt;ZEUS001.xml&amp;quot;_&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Validation Steps
&lt;/h2&gt;BizUnit supports the notion of validation steps which may be nested within test steps which support validation. This means that an MSMQ read step may use an XML validation step or a regular expression validation step to validate the data that it receives. Validation steps need to implement the &lt;b&gt;&lt;i&gt;IValidationStep&lt;/i&gt;&lt;/b&gt; interface. &lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public interface IValidationStep
{
    void ExecuteValidation(Stream data, XmlNode validatorConfig, Context context);
}
&lt;/pre&gt; &lt;br /&gt;A test step may use the Context object utilities to execute the appropriate validation step as shown below:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public void Execute(XmlNode testConfig, Context context)
{
    XmlNode validationConfig = testConfig.SelectSingleNode(&amp;quot;ValidationStep&amp;quot;);
    MemoryStream data = null;
 
    ...
 
    context.ExecuteValidator( data, validationConfig );
}
&lt;/pre&gt; &lt;br /&gt;The test step snippet below illustrates how a validation step is embeded in a file read step:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
&amp;lt;TestStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileValidateStep&amp;quot;&amp;gt;
    &amp;lt;Timeout&amp;gt;3000&amp;lt;/Timeout&amp;gt;
    &amp;lt;Directory&amp;gt;..\..\..\Rec_03\&amp;lt;/Directory&amp;gt;
    &amp;lt;SearchPattern&amp;gt;TransactionId_*.xml&amp;lt;/SearchPattern&amp;gt;
    &amp;lt;DeleteFile&amp;gt;true&amp;lt;/DeleteFile&amp;gt;
			
    &amp;lt;ValidationStep assemblyPath=&amp;quot;&amp;quot; typeName=&amp;quot;Microsoft.Services.BizTalkApplicationFramework.BizUnit.XmlValidationStep&amp;quot;&amp;gt;
        &amp;lt;XmlSchemaPath&amp;gt;..\..\..\TestData\PurchaseOrder.xsd&amp;lt;/XmlSchemaPath&amp;gt;
        &amp;lt;XmlSchemaNameSpace&amp;gt;http://SendMail.PurchaseOrder&amp;lt;/XmlSchemaNameSpace&amp;gt;
        &amp;lt;XPathList&amp;gt;
            &amp;lt;XPathValidation query=
                &amp;quot;/*[local-name()='PurchaseOrder' and namespace-uri()='http://SendMail.PurchaseOrder']
                /*[local-name()='PONumber' and namespace-uri()='']&amp;quot;&amp;gt;PONumber_0&amp;lt;/XPathValidation&amp;gt;
        &amp;lt;/XPathList&amp;gt;
    &amp;lt;/ValidationStep&amp;gt;			
&amp;lt;/TestStep&amp;gt;
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Context Loader Steps
&lt;/h2&gt;Similarly, BizUnit supports context loader steps, which are responsible for loading data into the BizUnit context. These types of need to implement the &lt;b&gt;&lt;i&gt;IContextLoaderStep&lt;/i&gt;&lt;/b&gt; interface as shown below:&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public interface IContextLoaderStep
{
    void ExecuteContextLoader(Stream data, XmlNode contextConfig, Context context);
}
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Getting Started&lt;/b&gt;
&lt;/h2&gt;The best way to get started is to download the latest version, install it and then take a look at the SDK samples. All the source is currently included, so feel free to take a closer look at the code. All the test steps along with the framework itself are documented in the .CHM that is installed.&lt;br /&gt; &lt;br /&gt;Finally, my apologies for the shameless plug :-), but Chapter 10 of &lt;b&gt;&lt;i&gt;&lt;a href="http://www.amazon.com/Professional-BizTalk-Server-Darren-Jefford/dp/0470046422/ref=pd_bbs_sr_4/103-9081803-2555041?ie=UTF8&amp;amp;s=books&amp;amp;qid=1172915706&amp;amp;sr=8-4" class="externalLink"&gt;Professional BizTalk Server 2006&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; book which I co-authored discusses in more detail how BizUnit may be used as an integral part of your development process, and how it may be used to drive stress and performance testing. &lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=bizunit&amp;amp;DownloadId=11374" alt="BizTalk2006Book.jpg" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;b&gt;Acknowledgments&lt;/b&gt;
&lt;/h2&gt;I'd like to thanks the follwing people who have contributed to BizUnit in some way, either by donating test steps, identifying bugs, or by providing requirements which have subsequently been implemented. I may have missed some people off, if so, it's not intensional, please drop me a mail to remind me:&lt;br /&gt; &lt;br /&gt;Dharshana Kalahejagoda &lt;br /&gt;Jon Fancey&lt;br /&gt;Isaac Young&lt;br /&gt;Mike Becker&lt;br /&gt;Tanveer Rashid&lt;br /&gt;Young Jun Hong&lt;br /&gt;Dave Regan&lt;br /&gt;Ian Cross&lt;br /&gt;Greg Beach&lt;br /&gt;Daren Jefford&lt;br /&gt;Kevin Purcell&lt;br /&gt;Karina Apostolides&lt;br /&gt;Jon Bonnick&lt;br /&gt;Brian Milburn&lt;br /&gt;Rahmatullah Khan&lt;br /&gt; &lt;br /&gt;Enjoy!&lt;br /&gt;
&lt;/div&gt;</description><author>kevinsmi</author><pubDate>Thu, 08 May 2008 08:10:00 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080508081000A</guid></item><item><title>COMMENTED ISSUE: Tests pass that should fail</title><link>http://www.codeplex.com/bizunit/WorkItem/View.aspx?WorkItemId=6019</link><description>I have been migrating some tests from running against BizUnit 2 to BizUnit 3.  When I run them I found some instances where tests should have failed which in actual fact passed.&lt;br /&gt;&lt;br /&gt;The scenarios are as follows&amp;#58;&lt;br /&gt;&lt;br /&gt;1. I had specified the test step name incorrectly and a type load exception was thrown and logged, but the test still passed&lt;br /&gt;&lt;br /&gt;2. I had a custom test step which throws an exception yet the test still passes.&lt;br /&gt;&lt;br /&gt;I have used reflector to examine the code and i think the problem is in the below code snippet in the BizUnit object.  &lt;br /&gt;&lt;br /&gt;private void ExecuteSteps&amp;#40;XmlNodeList steps&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;    if &amp;#40;null &amp;#33;&amp;#61; steps&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;        foreach &amp;#40;XmlNode node in steps&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;            try&lt;br /&gt;            &amp;#123;&lt;br /&gt;                BizUnitTestStepWrapper stepWrapper &amp;#61; new BizUnitTestStepWrapper&amp;#40;node&amp;#41;&amp;#59;&lt;br /&gt;                this.ExecuteTestStep&amp;#40;stepWrapper&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;            catch &amp;#40;Exception exception&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                this.logger.LogException&amp;#40;exception&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;        this.FlushConcurrentQueue&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;    &amp;#125;&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;In this snippet you can see the exception is swallowed up in the catch block.&lt;br /&gt;&lt;br /&gt;This is probably a significant defect as it means that anyone migrating their tests cant as they will always pass, and i assume this would also affect new tests in the same way.&lt;br /&gt;&lt;br /&gt;Hope this helps and look forward to a patch&lt;br /&gt;&lt;br /&gt;Mike&lt;br /&gt;Comments: ** Comment from web user: kevinsmi ** &lt;p&gt;The fix is in the latest version - 3.0.1026.0&lt;/p&gt;&lt;p&gt;thanks,&lt;/p&gt;&lt;p&gt;&amp;#42;Kevin&amp;#42;&lt;/p&gt;</description><author>kevinsmi</author><pubDate>Wed, 07 May 2008 23:04:29 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Tests pass that should fail 20080507110429P</guid></item><item><title>COMMENTED ISSUE: Global Variable</title><link>http://www.codeplex.com/bizunit/WorkItem/View.aspx?WorkItemId=6109</link><description>Add the ability to save and retrieve global variables that could be used by any test case during the test session. I&amp;#8217;m thinking of this because I think we should divide the full scenario test into many test cases to be run later by BizUnit framework in sequence. That will be easier to modify, enhance, and track the errors.&lt;br /&gt;&lt;br /&gt;Let&amp;#8217;s assume that we have a very complicated scenario to test, it will be better to divide that full scenario testing into many test cases, like the following&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; ST001_Initialize&lt;br /&gt;&amp;#42; ST002_SetupEnv&lt;br /&gt;&amp;#42; ST003_CheckBusinessOperation1&lt;br /&gt;&amp;#42; ST004_CheckBusinessOperation2&lt;br /&gt;&amp;#42; ST005_CheckBusinessOperation3&lt;br /&gt;&amp;#42; ST006_CheckBusinessOperation4&lt;br /&gt;&amp;#42; ST007_CheckBusinessOperation5&lt;br /&gt;&amp;#42; ST008_CheckBusinessOperation6&lt;br /&gt;&amp;#42; ST009_CheckBusinessOperation7&lt;br /&gt;&amp;#42; ST010_Finalize&lt;br /&gt;&amp;#42; ST011_PrintTestDuration&lt;br /&gt;&lt;br /&gt;Let&amp;#8217;s assume that we are using a URI like folder path in test steps across the divided test cases. So it will be better to set that global variable to be used later by other test cases.&lt;br /&gt;&lt;br /&gt;I&amp;#8217;m suggesting to add global variable in initialization file, in the following format.&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#60;TestStep assemblyPath&amp;#61;&amp;#34;&amp;#34;&lt;br /&gt;typeName&amp;#61;&amp;#34;namespace.AddGlobalVariable&amp;#34;&lt;br /&gt;description&amp;#61;&amp;#34;Set Start Time&amp;#34;&lt;br /&gt;failOnError&amp;#61;&amp;#34;False&amp;#34;&amp;#62;&lt;br /&gt;   &amp;#60;GlobaleVaiable&amp;#62;&lt;br /&gt;     &amp;#60;add name&amp;#61;&amp;#8221;Archive.FolderPath&amp;#8221;&amp;#62;c&amp;#58;&amp;#92;MySystem&amp;#92;FileDrops&amp;#92;Archives&amp;#60;&amp;#47;add&amp;#62;&lt;br /&gt;     &amp;#60;add name&amp;#61;&amp;#8221;Operation.SummaryReport&amp;#8221;&amp;#62;c&amp;#58;&amp;#92;MySystem&amp;#92;FileDrops&amp;#92;Summary&amp;#60;&amp;#47;add&amp;#62;&lt;br /&gt;     &amp;#60;add name&amp;#61;&amp;#8221;DatabaseConnectionStr&amp;#8221;&amp;#62;ConnectionString&amp;#60;&amp;#47;add&amp;#62;&lt;br /&gt;  &amp;#60;&amp;#47;GlobaleVaiable&amp;#62;&lt;br /&gt;    &amp;#60;&amp;#47;TestStep&amp;#62;&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To be used later as&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#60;TestStep &lt;br /&gt;assemblyPath&amp;#61;&amp;#34; &lt;br /&gt;typeName&amp;#61;&amp;#34;BizUnit.BizTalkApplicationFramework.BizUnit.WaitOnFileStep&amp;#34;&amp;#62;&lt;br /&gt;&amp;#60;Path&amp;#62;&amp;#37;Archive.FolderPath&amp;#37;&amp;#60;&amp;#47;Path&amp;#62; &amp;#47;&amp;#47; Using Global variable&lt;br /&gt;&amp;#60;FileFilter&amp;#62;&amp;#42;.xml&amp;#60;&amp;#47;FileFilter&amp;#62;&lt;br /&gt;&amp;#60;TimeOut&amp;#62;70000&amp;#60;&amp;#47;TimeOut&amp;#62;&lt;br /&gt;&amp;#60;&amp;#47;TestStep&amp;#62;&lt;br /&gt;&amp;#125;&lt;br /&gt;Comments: ** Comment from web user: kevinsmi ** &lt;p&gt;Hi,&lt;/p&gt;&lt;p&gt;Is there any reason why you can&amp;#39;t use the BizUnit context object to flow this&amp;#63; This is what it is for, flowing state between test steps and test cases.&lt;/p&gt;&lt;p&gt;Thanks,&lt;/p&gt;&lt;p&gt;&amp;#42;Kevin&amp;#42;&lt;/p&gt;</description><author>kevinsmi</author><pubDate>Wed, 07 May 2008 23:03:42 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Global Variable 20080507110342P</guid></item><item><title>UPDATED RELEASE: 3.0.1026.0 - Beta 2</title><link>http://www.codeplex.com/bizunit/Release/ProjectReleases.aspx?ReleaseId=13211</link><description>&amp;#42;BizUnit v3.0&amp;#34; - &amp;#42;Beta 2 Release&amp;#42;&lt;br /&gt;&lt;br /&gt;This is a major release with some big changes&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42;BizUnit Object Model&amp;#42; - firstly BizUnit introduces an object model to enable BizUnit tests to be created programatically. This primarily targets the ability to create test matrix&amp;#39;s in Excel and have BizUnit run the spreadsheet directly - no need to serialise out Xml. The SDK has a sample spreadsheet and a generic spreadsheet parser.&lt;br /&gt;&lt;br /&gt;&amp;#42;UI Automation Testing&amp;#42; - another powerful feature is a new test step library which enables UI&amp;#39;s to be tested by BizUnit, this enables seemless integration of server side and client side test code, truely powerful &amp;#58;-&amp;#41;. Special thanks to my colleague Dharshana Kalahejagoda for delivering this excellent functionality.&lt;br /&gt;&lt;br /&gt;&amp;#42;Note&amp;#42;&amp;#58; this is still a beta release, not all of the tests steps have been enhanced with the new object model and there are still some know doc issues&lt;br /&gt;&lt;br /&gt;Beta 2 fixes some know bugs in the v3 Beta 1 release, such as test case false-positives when using the OM and also the default value for failOnError is consistent with the XML tests, i.e. defaults to true.&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;&lt;br /&gt;&amp;#42;Kevin&amp;#42;</description><author></author><pubDate>Wed, 07 May 2008 23:01:24 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: 3.0.1026.0 - Beta 2 20080507110124P</guid></item></channel></rss>