Should is a .NET assembly of extension methods for building easy to write and easy to read assert statements.  The advantage of using this assembly is the syntax is more clear and more like human language.  It's free, open source, and it doesn't matter if you're using NUnit or MSTest or any test runner (Test Driven .NET, ReSharper, etc.).  The project is in Beta 1.1, but I've used it on a couple of projects now with no problems.

I've never really liked the MSTest way of doing an assert.  The whole expected and actual arguments always seemed flipped around to me.

// Assert
Assert.AreEqual("eggs", breakfast.Foods.First());
Assert.AreEqual("bacon", breakfast.Foods.Last()); 

Instead, just reference the Should assembly and add the

using Should;

statement to the top of your test code and you can change it to:

// Assert
breakfast.Foods.First().ShouldEqual("eggs");
breakfast.Foods.Last().ShouldEqual("bacon");

I think one of the tricks to writing good tests is to have code that is dead simple to read when you come back to it much later.  The Should assembly gives you that.

Here are some other calls from the CodePlex home page for the project:

public void Should_String_assertions()
{
    var obj = new object();
    obj.ShouldBeInRange(1,2);
    obj.ShouldBeNull();
    obj.ShouldBeSameAs(new object());
    obj.ShouldBeType(typeof (object));
    obj.ShouldEqual(obj);
    obj.ShouldNotBeInRange(1,2);
    obj.ShouldNotBeNull();
    obj.ShouldNotBeSameAs(new object());
    obj.ShouldNotBeType(typeof(string));
    obj.ShouldNotEqual("foo");

    "This String".ShouldContain("this");
    "This String".ShouldNotBeEmpty();
    "This String".ShouldNotContain("foobar");

    false.ShouldBeFalse();
    true.ShouldBeTrue();

    var list = new List<object>();
    list.ShouldBeEmpty();
    list.ShouldNotContain(new object());

    var item = new object();
    list.Add(item);
    list.ShouldNotBeEmpty();
    list.ShouldContain(item);
}

You should check it out!