Poor mans bootstrapping unit testing


I wrote in a pervious post about my inability to use NUnit, and my want to avoid my own unit testing engine.  I felt caught between a rock and a hard place.  I want to test, but i don’t have to the testing tools available.  I mentioned that i would need some sort of bootstrapping system and I think I’ve got it.  Here’s the current ICollectionTests class:



namespace Testing.Collections.Tests


{


    [TestFixture]


    public abstract class ICollectionTests


    {


        protected ICollectionTests() {


 


        }


 


        protected abstract ICollection<A> GetNewCollection<A>();


 


        [Test]


        public void InitiallyEmpty() {


            Assert.IsTrue(false);


            ICollection<int> collection = GetNewCollection<int>();


            Assert.IsTrue(collection.Empty);


        }


 


        [Test]


        public void EmptyAfterAdd() {


            Assert.IsTrue(false);


            ICollection<int> collection = GetNewCollection<int>();


            bool modified = collection.Add(0);


 


            if (modified) {


                Assert.IsFalse(collection.Empty);


            } else {


                Assert.IsTrue(collection.Empty);


            }


        }


 


        public void RunAllTests() {


            InitiallyEmpty();


            EmptyAfterAdd();


        }


    }


}


As you can see i run all the tests by running (surprise surprise) RunAllTests.  Note that initially all test are designed to fail.  This is so i can be sure that the tests are actually running.  I know provide a concrete implementation for my ArrayCollection class:



namespace Testing.Collections.Tests


{


    public class ArrayCollectionTests : ICollectionTests


    {


        public ArrayCollectionTests() {


        }


 


        protected override ICollection<A> GetNewCollection<A>() {


            return new ArrayCollection<A>();


        }


    }


}


To finish it all up, i create an executable out of my test assembly.  I.e:



namespace Testing.Collections.Tests


{


    class Program


    {


        static void Main(string[] args) {


            ArrayCollectionTests arrayCollectionTests = new ArrayCollectionTests();


            arrayCollectionTests.RunAllTests();


        }


    }


} 


I then try to run the exe and happily find that i get an AssertionException thrown.  I then go back and remove the Assert.IsTrue(false); one by one and at the end i have an executable which runs without a glitch.


Comments (0)