Unit testing 如何测试NUnit助手?

Unit testing 如何测试NUnit助手?,unit-testing,nunit,Unit Testing,Nunit,为了提高测试的可读性,我在NUnit2.5+的基础上构建了一个受RSpec启发的库。源代码可在以下位置获得: 此库允许我编写如下测试: [Test] public void It_should_returns_0_for_all_gutter_game() { var game = new Bowling(); for (int i = 0; i < 10; i++) game.Hit(0); game.Score.Should(Be.Equal(0

为了提高测试的可读性,我在NUnit2.5+的基础上构建了一个受RSpec启发的库。源代码可在以下位置获得:

此库允许我编写如下测试:

[Test]
public void It_should_returns_0_for_all_gutter_game()
{
    var game = new Bowling();
    for (int i = 0; i < 10; i++)
        game.Hit(0);
    game.Score.Should(Be.Equal(0));
}
[测试]
public void It_should_返回_0_for_all_ground_game()
{
var game=新保龄球();
对于(int i=0;i<10;i++)
游戏。点击(0);
游戏。得分。应该(等于(0));
}
“应该”方法是对所有对象的扩展方法,这些对象基本上接收一个带有如下NUnit断言的操作:

public static class Be
{
    public static Action<T> Equal(T to)
    {
        return (target) => NUnit.Framework.Assert.AreEqual(target, to);
    }
} 
公共静态类Be
{
公共静作用等于(T至)
{
return(target)=>NUnit.Framework.Assert.AreEqual(target,to);
}
} 
该库运行得很好,但我没有对库本身进行测试。。。基本上是因为我不知道如何测试它


那么,我如何测试它呢?我的意思是,如何确保“object.Should(Be.Equal(object))”真正检查相等性?

就个人而言,我会坚持使用
Assert.arequal(0,game.Score)
,这比
game.Score.Should(Be.Equal(0))
更容易理解。它不仅不需要额外的单元测试,也不需要另一组文档来解决所有问题。@Dave我的想法是只使用一个框架(我的:)。除了更加“有机”地进行编写之外,它还提供了设计时的类型检查(感谢泛型)。实际上,我将使用Assert.Throws/DoesNotThrow,但这正是我的想法。非常感谢。
[Test]
public void Be_Equal_action_throws_AssertionException_for_inequal_integers()
{
   var action = Be.Equal(0);
   bool raised = false;
   try
   {
       action(1);
   }
   catch (AssertionException)
   {
       raised = true;
   }
   Assert.IsTrue(raised, "No AssertionException was thrown");
}