Freigeben über


Bookmark Collection: Choosing the first test

Sorry for the diversions and the delay. The first thing I need to is choose the first test. It really does not matter which test is chosen first, really it doesn't. I have to finish all of the tests to finish the task. There are a couple of choices. I could choose the first test, "Count == 0". This test is very simple to implement and would get me started quickly. I could choose "Add a Bookmark, Retrieve using the label". This test also would not be hard to implement and really represents the essance of the problem. For this example, I am going to choose the "Count == 0" test because I want the simplest test to just get started. By the way, I am going to implement the BookmarkCollection in VS 2005. Here is the first test:

using

System;
using NUnit.Framework;

[

TestFixture]
public class BookmarkCollectionFixture
{
[Test]
public void UponCreationCountIsZero()
{
BookmarkCollection collection = new BookmarkCollection();
Assert.AreEqual(0, collection.Count);
}
}

In order to get the test to fail here is the implementation:

using

System;

public class BookmarkCollection
{
public int Count
{
get { return -1; }
}
}

When I run this test in NUnit I get the following result:

BookmarkCollectionFixture.UponCreationCountIsZero :
expected:<0>
but was:<-1>

Now let's choose an implementation to get the test to pass:

using

System;

public class BookmarkCollection
{
public int Count
{
get { return 0; }
}
}

When I run NUnit again the test passes. This implementation may seem ridculous but it really is the simplest design that is needed to pass the test. This is an example of a technique Kent Beck calls: "Fake It ('Til You Make It)". This technique helps us pass the test until we know of a better solution. That's all for the first test.

Comments

  • Anonymous
    November 08, 2004
    Miao

  • Anonymous
    November 09, 2004
    What about "throw new NotImplementedException()" as the failing version? It somehow seems less contrived than returning -1...

    Just my opinion, though...

  • Anonymous
    November 10, 2004
    I think I like throwing the NotImplementedEsxception as well. I guess the old Java habits die hard.

  • Anonymous
    November 16, 2004
    Rather than seeing the test fail because of a NotImplementedException I prefer to see it fail because the Assert.AreEqual(0, collection.Count); assertion is violated.

  • Anonymous
    May 31, 2009
    PingBack from http://outdoorceilingfansite.info/story.php?id=2327

  • Anonymous
    May 31, 2009
    PingBack from http://outdoorceilingfansite.info/story.php?id=19963