<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>Automatic Class Tester</title><link>http://classtester.codeplex.com/project/feeds/rss</link><description>Automatically unit test your model&amp;#58;   - Automatically test properties, spotting any miswired getters or setters   - Increase code coverage, reaching parts manual tests don&amp;#39;t even try to   - Supports ignoring specified properties if you have any funky logic in there that needs a manual test    - Tests for PropertyChanged events if your class implements INotifyPropertyChanged    Tests constructors and that they map parameters to properties    </description><item><title>Source code checked in, #96133</title><link>http://classtester.codeplex.com/SourceControl/changeset/changes/96133</link><description>Upgrade&amp;#58; New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link&amp;#58; http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkId&amp;#61;254563</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 21:40:31 GMT</pubDate><guid isPermaLink="false">Source code checked in, #96133 20121001094031P</guid></item><item><title>Source code checked in, #96132</title><link>http://classtester.codeplex.com/SourceControl/changeset/changes/96132</link><description>Checked in by server upgrade</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 21:33:03 GMT</pubDate><guid isPermaLink="false">Source code checked in, #96132 20121001093303P</guid></item><item><title>New Post: A few feature requests/documentation issues</title><link>http://classtester.codeplex.com/Thread/View.aspx?ThreadId=242723</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi all, neat project!&lt;/p&gt;
&lt;p&gt;I've been playing with the thought of making something similar, and am very happy someone's already done so :-).&amp;nbsp; However, there are a few features that would be nice to see, and hopefully at least some of them sound interesting and doable to you too.&lt;/p&gt;
&lt;p&gt;I'd like to test types without much regard for their structure.&amp;nbsp; There's two possible approaches here: AssemblyTester, and PropertyTester&amp;#43;ConstructorTester.&amp;nbsp; Using the former is a little too wide-scale for me, so I'm using the latter.&amp;nbsp; However,
 this makes some type-testing a hassle since PropertyTester requires an object, not a type:&amp;nbsp; that means you can't test types without manually constructing them - implying manually picking constructor values.&amp;nbsp; It'd be nice to be able to specify just
 a type, and have PropertyTester essentially work as ConstructorTester with the additional factor that it further tests properties on the constructed objects - not just &amp;quot;mapped&amp;quot; properties, but all of them.&amp;nbsp; This would enable testing on a per-type fashion
 without knowledge of the type internals.&lt;/p&gt;
&lt;p&gt;Secondly, it's not documented what kind of properties are tested: in particular, are private properties or public properties with a private accessor tested?&lt;/p&gt;
&lt;p&gt;Thirdly, as I understand it, the constructor-tester checks that parameters are correctly stored &amp;quot;in&amp;quot; the appropriate properties.&amp;nbsp; However, it doesn't check that all parameters actually correspond to properties; in particular, this means that a misspelled
 constructor parameter (or a refactored property that no longer corresponds to the constructor's parameter) isn't tested.&amp;nbsp; That's unfortunate; it'd be nice if either by default or optionally one could require that all constructor parameters must be matched
 to exactly one property - so that slightly mangled names don't silently cause incorrect initialization to be unnoticed.&lt;/p&gt;
&lt;p&gt;Finally, I use simple immutable types frequently - and here it makes sense to have public readonly fields rather than properties (to communicate the fact that the field won't be changing).&amp;nbsp; In practice, even a mutable type - as long as it's not part
 of a stable binary API - can use public fields equivalently to public automatic properties, but with less code and faster execution.&amp;nbsp; For such types of course the property tester is unnecessary (fields &amp;quot;work&amp;quot; by definition) but the protection the ConstructorTester
 provides would still be useful.&amp;nbsp; So, it'd be nice if ConstructorTester verified that all parameters correspond to
&lt;em&gt;either&lt;/em&gt; a property &lt;em&gt;or&lt;/em&gt; a public field and that that field is appropriately set.&lt;/p&gt;
&lt;p&gt;I realize you're just maintaining this as a matter of fun, professional pride, or altriusm and probably don't have time to fullfil every feature request - thanks for the library as-is in any case!&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Eamon Nerbonne&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description><author>emn13</author><pubDate>Fri, 21 Jan 2011 10:12:59 GMT</pubDate><guid isPermaLink="false">New Post: A few feature requests/documentation issues 20110121101259A</guid></item><item><title>Source code checked in, #63489</title><link>http://classtester.codeplex.com/SourceControl/changeset/changes/63489</link><description>Checked in by server upgrade</description><author>_TFSSERVICE</author><pubDate>Tue, 27 Jul 2010 20:28:19 GMT</pubDate><guid isPermaLink="false">Source code checked in, #63489 20100727082819P</guid></item><item><title>Source code checked in, #42952</title><link>http://classtester.codeplex.com/SourceControl/changeset/view/42952</link><description>minor refactor&amp;#13;&amp;#10;</description><author>SimonCropp</author><pubDate>Fri, 11 Sep 2009 04:03:29 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42952 20090911040329A</guid></item><item><title>Source code checked in, #42951</title><link>http://classtester.codeplex.com/SourceControl/changeset/view/42951</link><description>better use of generics&amp;#13;&amp;#10;</description><author>SimonCropp</author><pubDate>Fri, 11 Sep 2009 03:43:10 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42951 20090911034310A</guid></item><item><title>Source code checked in, #42948</title><link>http://classtester.codeplex.com/SourceControl/changeset/view/42948</link><description>update Library&amp;#47;&amp;#42;&amp;#13;&amp;#10;move to using svn to access</description><author>SimonCropp</author><pubDate>Fri, 11 Sep 2009 03:16:49 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42948 20090911031649A</guid></item><item><title>Source code checked in, #27439</title><link>http://www.codeplex.com/classtester/SourceControl/ListDownloadableCommits.aspx</link><description>a few minor tweaks</description><author>SimonCropp</author><pubDate>Tue, 06 Jan 2009 13:09:47 GMT</pubDate><guid isPermaLink="false">Source code checked in, #27439 20090106010947P</guid></item><item><title>Source code checked in, #27414</title><link>http://www.codeplex.com/classtester/SourceControl/ListDownloadableCommits.aspx</link><description>Make better use of lambda expressions</description><author>SimonCropp</author><pubDate>Mon, 05 Jan 2009 04:14:33 GMT</pubDate><guid isPermaLink="false">Source code checked in, #27414 20090105041433A</guid></item><item><title>Source code checked in, #27394</title><link>http://www.codeplex.com/classtester/SourceControl/ListDownloadableCommits.aspx</link><description>fix a couple of bugs with format strings&amp;#13;&amp;#10;remove some redundant usings&amp;#13;&amp;#10;Add AssemblyTester.AddConstructorExclusion&amp;#60;T&amp;#62;&amp;#13;&amp;#10;Add AssemblyTester.AddPropertyExclusion&amp;#60;TMember&amp;#62;&amp;#13;&amp;#10;Add PropertyTester.AddIgnoredProperty&amp;#60;TMember&amp;#62;&amp;#13;&amp;#10;Add ConstructorTester.AddIgnoredConstructor&amp;#60;T&amp;#62;&amp;#13;&amp;#10;Add Guard class for basic argument checking&amp;#13;&amp;#10;Add ExpressionExtensions</description><author>SimonCropp</author><pubDate>Sun, 04 Jan 2009 04:35:44 GMT</pubDate><guid isPermaLink="false">Source code checked in, #27394 20090104043544A</guid></item><item><title>Reviewed: 1.1.2925.23829 (Oct 30, 2008)</title><link>http://www.codeplex.com/classtester/Release/ProjectReleases.aspx?ReleaseId=9592</link><description>Rated 5 Stars (out of 5) - Not only is this great for helping us maintain our code coverage goals, it helps find mis-wired properties for us.  Even though we use automatic properties wherever possible, there are times that we cannot use them and bring the risk of human error to the party.  Indispensable tool!</description><author>jferris</author><pubDate>Thu, 30 Oct 2008 17:25:24 GMT</pubDate><guid isPermaLink="false">Reviewed: 1.1.2925.23829 (Oct 30, 2008) 20081030052524P</guid></item><item><title>COMMENTED ISSUE: Add support for Abstract Types and Interfaces to the TypeFactory</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3093</link><description>Use a mock repository to add support for abstract types &amp;#40;abstract classes and interfaces&amp;#41; to the TypeFactory&lt;br /&gt;Comments: ** Comment from web user: furie ** &lt;p&gt;This can be done now by extending the TypeFactory an instance of it to a tester constructor.&lt;br /&gt;using Castle.Core.Interceptor&amp;#59;&lt;br /&gt;using Castle.DynamicProxy&amp;#59;&lt;br /&gt;public class MyTypeFactory &amp;#58; TypeFactory&lt;br /&gt;&amp;#123;&lt;br /&gt;static ProxyGenerator proxyGenerator &amp;#61; new ProxyGenerator&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;public override object CreateRandomValue&amp;#40;Type type&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;if &amp;#40;type.IsInterface&amp;#41;&lt;br /&gt; return proxyGenerator.CreateInterfaceProxyWithoutTarget&amp;#40;type, new StandardInterceptor&amp;#40;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;return base.CreateRandomValue&amp;#40;type&amp;#41;&amp;#59;&lt;br /&gt;&amp;#125;&lt;br /&gt;public override bool CanCreateInstance&amp;#40;Type type&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;bool result &amp;#61; base.CanCreateInstance&amp;#40;type&amp;#41;&amp;#59;&lt;br /&gt;if &amp;#40;&amp;#33;result&amp;#41;&lt;br /&gt; result &amp;#61; type.IsInterface &amp;#38;&amp;#38; &amp;#33;type.IsGenericTypeDefinition&amp;#59;&lt;br /&gt;retur result&amp;#59;&lt;br /&gt;&amp;#125;&lt;/p&gt;</description><author>furie</author><pubDate>Thu, 07 Feb 2008 15:28:30 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Add support for Abstract Types and Interfaces to the TypeFactory 20080207032830P</guid></item><item><title>COMMENTED ISSUE: PropertyChecker to optionally test properties throw ArgumentNullException when setting null value</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3543</link><description>Often a precondition of a property is that the value set is non null and therefore the property should throw an ArgumentNullExtension. Would be good to switch this checking on at class level. Also optionally checking string.Empty throws would be great also.&lt;br /&gt;Comments: ** Comment from web user: furie ** &lt;p&gt;Actually I think this would be better implemented as a seperate &amp;#39;NullParam&amp;#39; tester that tested Constructors, Properties, and Methods.&lt;/p&gt;</description><author>furie</author><pubDate>Thu, 07 Feb 2008 15:16:59 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: PropertyChecker to optionally test properties throw ArgumentNullException when setting null value 20080207031659P</guid></item><item><title>CREATED ISSUE: PropertyChecker to optionally test properties throw ArgumentNullException when setting null value</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3543</link><description>Often a precondition of a property is that the value set is non null and therefore the property should throw an ArgumentNullExtension. Would be good to switch this checking on at class level. Also optionally checking string.Empty throws would be great also.&lt;br /&gt;</description><author>furie</author><pubDate>Thu, 07 Feb 2008 11:12:34 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: PropertyChecker to optionally test properties throw ArgumentNullException when setting null value 20080207111234A</guid></item><item><title>COMMENTED ISSUE: Add support for Abstract Types and Interfaces to the TypeFactory</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3093</link><description>Use a mock repository to add support for abstract types &amp;#40;abstract classes and interfaces&amp;#41; to the TypeFactory&lt;br /&gt;Comments: ** Comment from web user: furie ** &lt;p&gt;Consider using Castle DynamicProxy 2 to create an instance of an abstract class. It&amp;#39;s lightweight, quick and simple. RhinoMocks uses it to create its mocks.&lt;/p&gt;</description><author>furie</author><pubDate>Thu, 07 Feb 2008 10:59:53 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Add support for Abstract Types and Interfaces to the TypeFactory 20080207105953A</guid></item><item><title>CREATED ISSUE: Strongly signed assemblies</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3432</link><description>Hello,&lt;br /&gt;&lt;br /&gt;Thanks for a great tool and a great idea. The only thing I really miss is being able to use the library in a strongly signed test projects. Would it be possible for you to include this in the next release&amp;#63;&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Igor&lt;br /&gt;</description><author>igorbrejc</author><pubDate>Wed, 30 Jan 2008 08:18:51 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: Strongly signed assemblies 20080130081851A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/classtester/SourceControl/ListDownloadableCommits.aspx</link><description>Added AddPropertyExclusions and AddConstructorExclusion to the AssemblyTester</description><author>molmorg</author><pubDate>Wed, 16 Jan 2008 09:52:45 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080116095245A</guid></item><item><title>COMMENTED ISSUE: Compare two provided objects instead of comparing randomly generated value</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3129</link><description>Comparing randomly genrated values is great for detecting bugs where a public property uses the wrong private field. Another test that would also be very useful is to compare all the properties of two provided objects. What I&amp;#39;m envisioning is something like this &amp;#40;this is only psendo-code&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#91;TestMethod&amp;#93;&lt;br /&gt;public void TestPerson&amp;#40;&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;    Person p1 &amp;#61; new Person&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;    p1.Name &amp;#61; &amp;#34;Bob Smith&amp;#34;&amp;#59;&lt;br /&gt;    string personId &amp;#61; MyDAL.Save&amp;#40;p1&amp;#41;&amp;#59;&lt;br /&gt;    Person p2 &amp;#61; MyDAL.Fetch&amp;#40;personId&amp;#41;&amp;#59;&lt;br /&gt;    PropertyTester tester &amp;#61; new PropertyTester&amp;#40;p1, p2&amp;#41;&amp;#59;&lt;br /&gt;    tester.TestProperties&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#125;&lt;br /&gt;Comments: ** Comment from web user: Jericho ** &lt;p&gt;I just submitted a patch with the code for a &amp;#34;PropertyComparer&amp;#34; class that will compare all the properties on two objects to make sure that the values are the same.&lt;/p&gt;</description><author>Jericho</author><pubDate>Fri, 11 Jan 2008 17:14:27 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Compare two provided objects instead of comparing randomly generated value 20080111051427P</guid></item><item><title>Patch Uploaded</title><link>http://www.codeplex.com/classtester/SourceControl/PatchList.aspx</link><description>
&lt;p&gt;&lt;a href='/UserAccount/UserProfile.aspx?UserName=Jericho'&gt;Jericho&lt;/a&gt; has uploaded a patch.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;I wrote a new tester to compare the properties of two provided objects. Here&amp;#39;s a unit test example that demonstrates how it works&amp;#58;&lt;br /&gt;&lt;br /&gt;using System&amp;#59;&lt;br /&gt;using System.Collections.Generic&amp;#59;&lt;br /&gt;using Microsoft.VisualStudio.TestTools.UnitTesting&amp;#59;&lt;br /&gt;using TheJoyOfCode.QualityTools.Tests.TestSubjects&amp;#59;&lt;br /&gt;using Rhino.Mocks&amp;#59;&lt;br /&gt;&lt;br /&gt;namespace TheJoyOfCode.QualityTools.Tests&lt;br /&gt;&amp;#123;&lt;br /&gt;    &amp;#91;TestClass&amp;#93;&lt;br /&gt;    public class PropertyComparerTest&lt;br /&gt;    &amp;#123;&lt;br /&gt;        &amp;#91;TestMethod&amp;#93;&lt;br /&gt;        public void CompareProperties_Good&amp;#40;&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;            DummyGood dummy1 &amp;#61; new DummyGood&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            dummy1.Bool &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            DummyGood dummy2 &amp;#61; new DummyGood&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            dummy2.Bool &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            PropertyComparer comparer &amp;#61; new  PropertyComparer&amp;#40;dummy1, dummy2&amp;#41;&amp;#59;&lt;br /&gt;            comparer.CompareProperties&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        &amp;#91;TestMethod&amp;#93;&lt;br /&gt;        &amp;#91;ExpectedException&amp;#40;typeof&amp;#40;PropertyCompareException&amp;#41;&amp;#41;&amp;#93;&lt;br /&gt;        public void CompareProperties_PropertiesDifferent&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;            DummyGood dummy1 &amp;#61; new DummyGood&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            dummy1.Bool &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            DummyGood dummy2 &amp;#61; new DummyGood&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            dummy2.Bool &amp;#61; false&amp;#59;&lt;br /&gt;&lt;br /&gt;            PropertyComparer comparer &amp;#61; new PropertyComparer&amp;#40;dummy1, dummy2&amp;#41;&amp;#59;&lt;br /&gt;            comparer.CompareProperties&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        &amp;#91;TestMethod&amp;#93;&lt;br /&gt;        &amp;#91;ExpectedException&amp;#40;typeof&amp;#40;PropertyCompareException&amp;#41;&amp;#41;&amp;#93;&lt;br /&gt;        public void CompareProperties_TypesDifferent&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;            DummyGood dummy1 &amp;#61; new DummyGood&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            dummy1.Bool &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            DummyNoEvent dummy2 &amp;#61; new DummyNoEvent&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            dummy2.SomeInt &amp;#61; 8&amp;#59;&lt;br /&gt;&lt;br /&gt;            PropertyComparer comparer &amp;#61; new PropertyComparer&amp;#40;dummy1, dummy2&amp;#41;&amp;#59;&lt;br /&gt;            comparer.CompareProperties&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;&amp;#125;&lt;/p&gt;</description><author>Jericho</author><pubDate>Fri, 11 Jan 2008 17:13:05 GMT</pubDate><guid isPermaLink="false">Patch Uploaded 20080111051305P</guid></item><item><title>CLOSED ISSUE: Add support for creation of Arrays to TypeFactory</title><link>http://www.codeplex.com/classtester/WorkItem/View.aspx?WorkItemId=3097</link><description>TypeFactory can&amp;#39;t currently create arrays &amp;#40;e.g. object&amp;#91;&amp;#93;&amp;#41;&lt;br /&gt;</description><author>molmorg</author><pubDate>Wed, 09 Jan 2008 17:31:08 GMT</pubDate><guid isPermaLink="false">CLOSED ISSUE: Add support for creation of Arrays to TypeFactory 20080109053108P</guid></item></channel></rss>