<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://vsteamsystemcentral.com/cs21/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Brian P. Johnston</title><link>http://vsteamsystemcentral.com/cs21/blogs/brian_johnston/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Those pesky auto-generated settings files and obtaining 100% code coverage.</title><link>http://vsteamsystemcentral.com/cs21/blogs/brian_johnston/archive/2008/11/14/those-pesky-auto-generated-settings-files-and-obtaining-100-code-coverage.aspx</link><pubDate>Sat, 15 Nov 2008 00:03:00 GMT</pubDate><guid isPermaLink="false">d291d4df-cf3d-4686-b1b1-8a0a96a3a0a7:324</guid><dc:creator>brian</dc:creator><slash:comments>0</slash:comments><comments>http://vsteamsystemcentral.com/cs21/blogs/brian_johnston/comments/324.aspx</comments><wfw:commentRss>http://vsteamsystemcentral.com/cs21/blogs/brian_johnston/commentrss.aspx?PostID=324</wfw:commentRss><description>&lt;div class="Section1"&gt;

&lt;p&gt;I use settings file left and right - not everything I do requires DI - and despite what some would have you believe, not everything you do requires it either.&amp;nbsp; &lt;span class="GramE"&gt;A particular annoyance of mine is seeing '0%' code coverage (or very low numbers) in
Visual Studio when I run my tests which throws my overall percentage (which is generally 100% everywhere else) down.&lt;/span&gt; &amp;nbsp; This combined with the fact
that testing something that that relies on a value that comes from a 'settings' file is 'troublesome' at
best. &amp;nbsp; Now many purists would believe my design is bad because I should have some layer of abstraction or use DI, blah blah blah, but I'm not a purist and I generally believe purists can't see the forest through the trees.&amp;nbsp; Anyway,
I've come up with the following strategy for dealing with this annoyance and hopefully someone else out there who is not a purist will find it helpful.&lt;br&gt;&lt;/p&gt;

&lt;p&gt;The auto-generated settings file as we all know is sealed, but it's also partial,
unfortunately Microsoft doesn't add the &lt;span class="SpellE"&gt;DebuggerNonUserCode&lt;/span&gt;
at the class level (which IMO they should).&amp;nbsp; I want my tests to have the
ability to inject values so that the code I'm testing, which will pull a
setting, can be injected with whatever value I like and thus accurately
tested.&amp;nbsp;&amp;nbsp; I don't want to jump through a bunch of hoops to do this
either.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Since I always have &lt;span class="SpellE"&gt;InternalsVisibleTo&lt;/span&gt; set for &lt;span class="SpellE"&gt;RhinoMocks&lt;/span&gt; and my test assembly, I can see this code, so in
my tests, I'll just set the 'setting' to whatever I want it to be.&lt;/p&gt;

&lt;p&gt;Again some purists might argue that I should abstract things out and create
more moving parts - but this was quick (5 minutes) and easy (obviously looking at the code) and gets the job done without creating a bunch of complexity or an 'advanced' level of programming skills.&amp;nbsp; My tests that use this helper are nice and clean with this and run under a 1/10th of a second.&amp;nbsp; Some may say I'm exposing a 'hole' in my code because now a user with reflection could alter a setting.&amp;nbsp; You're right they could.&amp;nbsp; Why they would do it through reflection versus updating the config file they have; I don't know - but I'm not worried about the application falling apart because of user mis-configuring a setting through code anymore so that I am them mis-configuring through XML.&amp;nbsp; The only thing that I'd suggest is that you could have a 'generic' method that would work for anything and you'd just pass in the name of the setting; but at the time of this writing I haven't refactored to that point yet.&lt;/p&gt;



&lt;p class="ececmsonormal"&gt;&lt;span style="font-size:10pt;font-family:'Tahoma','sans-serif';"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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; &lt;span class="GramE"&gt;This&lt;/span&gt; object is purely for testing purposes and also helps
remove coverage analysis from&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
the Setting class that is auto generated by Visual Studio.&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;span style="background:white none repeat scroll 0% 50%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span style="-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;background-attachment:scroll;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;span style="-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;background-attachment:scroll;"&gt;&lt;span style="color:green;"&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;
The &lt;span class="SpellE"&gt;DebuggerNonUserCode&lt;/span&gt; attribute will need to
removed from the settings file if Visual Studio&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
regenerates the file.&amp;nbsp; Visual Studio only applies this attribute to the
instance properties that wrap&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
your settings, not to the class itself or the static '&lt;span class="SpellE"&gt;Defaut&lt;/span&gt;'
property.&amp;nbsp;&amp;nbsp; This can easily be done with a&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
Find and Replace on the &lt;span class="SpellE"&gt;desinger&lt;/span&gt; file.&amp;nbsp; You
shouldn't be changing settings that often anyway.&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
Failure to remove the attribute from the designer will result in off the wall
errors in your unit tests.&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
&lt;span class="GramE"&gt;If&lt;/span&gt; you remove the attribute here because of errors in
your unit test, then code coverage will not be&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
accurate; we normally don't care about coverage on a settings file.&lt;/span&gt;&lt;br&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;br&gt;[&lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;&lt;span&gt;DebuggerNonUserCode&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;)]&lt;br&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;sealed&lt;/span&gt; &lt;span style="color:blue;"&gt;partial&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span&gt;Settings&lt;/span&gt;&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
Sets the Logger property to the specified value.&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;&lt;span class="SpellE"&gt;param&lt;/span&gt;
name="logger"&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
&lt;span class="GramE"&gt;The&lt;/span&gt; name of the logger in Assembly, &lt;span class="SpellE"&gt;FullClassName&lt;/span&gt; format.&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/&lt;span class="SpellE"&gt;param&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span class="GramE"&gt;SetLogger&lt;/span&gt;&lt;/span&gt;&lt;span class="GramE"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; logger)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Properties[&lt;span&gt;"Logger"&lt;/span&gt;].&lt;span class="SpellE"&gt;DefaultValue&lt;/span&gt; = logger;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:green;"&gt;//Call Reload in order to submit the change,
otherwise, when setting, the setting may not stay,&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:green;"&gt;//this is particularly &lt;span class="SpellE"&gt;seeting&lt;/span&gt;
when setting to &lt;span class="SpellE"&gt;string.Empty&lt;/span&gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Reload();&lt;/span&gt;&lt;/p&gt;

&lt;p class="ececmsonormal"&gt;&lt;span style="font-size:10pt;font-family:'Tahoma','sans-serif';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;

&lt;p class="ececmsonormal"&gt;&lt;span style="font-size:10pt;font-family:'Tahoma','sans-serif';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
&lt;span class="GramE"&gt;Sets&lt;/span&gt; the &lt;span class="SpellE"&gt;LogLevel&lt;/span&gt; property
to the specified value.&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;&lt;span class="SpellE"&gt;param&lt;/span&gt; name="&lt;span class="SpellE"&gt;logLevel&lt;/span&gt;"&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&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;
&lt;span class="GramE"&gt;The&lt;/span&gt; value that should be entered into the &lt;span class="SpellE"&gt;LogLevel&lt;/span&gt; setting.&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/&lt;span class="SpellE"&gt;param&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span class="SpellE"&gt;SetLogLevel&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt; &lt;span class="SpellE"&gt;logLevel&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties[&lt;span&gt;"&lt;span class="SpellE"&gt;LogLevel&lt;/span&gt;"&lt;/span&gt;].&lt;span class="SpellE"&gt;DefaultValue&lt;/span&gt; = &lt;span class="SpellE"&gt;logLevel&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//Call Reload in order to submit the change,
otherwise, when setting, the setting may not stay,&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//this is particularly &lt;span class="SpellE"&gt;seeting&lt;/span&gt;
when setting to &lt;span class="SpellE"&gt;string.Empty&lt;/span&gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reload();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;&lt;img src="http://vsteamsystemcentral.com/cs21/aggbug.aspx?PostID=324" width="1" height="1"&gt;</description><category domain="http://vsteamsystemcentral.com/cs21/blogs/brian_johnston/archive/tags/Testing/default.aspx">Testing</category></item></channel></rss>