代码之家  ›  专栏  ›  技术社区  ›  Ben Cawley

NUnit-断言异常和属性

  •  1
  • Ben Cawley  · 技术社区  · 16 年前

    我的印象是我可以做如下事情:

    ICommand command = CreateCommandObj();
    Assert.That( () => command.DoWork(), Throws.TypeOf<ArgumentException>(),                        
                         Has.Property("ParamName").EqualTo("myParam") &
    Has.Property("Message").EqualTo("myMessage") );
    

    请注意,上面是一个人为的例子来说明这一点,忽略我正在寻找一个ArgumentException的方法,该方法除了任何参数以外都没有:)

    谢谢你的帮助。

    1) 无法将lambda表达式转换为类型“object”,因为它不是委托类型。

    3 回复  |  直到 16 年前
        1
  •  7
  •   Ben Cawley    16 年前

    我需要使用以下语法:

    ICommand command = CreateCommandObj();
    Assert.That( () => command.DoWork(), 
                       Throws.TypeOf<ArgumentException>()
                       .And.Message.Equals("MyMessage"));
    

    谢谢大家的建议。

        2
  •  2
  •   Matty    7 年前

    您也可以这样做:

    var exception = Assert.Throws<ArgumentException>(() => {
        command.DoWork();
    });
    Assert.AreEqual("myMessage", exception.Message);
    
        3
  •  1
  •   Matthew Dresser    16 年前

    您可以使用 [ExpectedException]

    [Test] 
    [ExpectedException(typeof(InvalidOperationException))]
    public void Test_SomeMethod()
    {
        something.SomeMehthod();
    }
    

    您可以在ExpectedException属性的构造函数中设置预期异常的属性。

    编辑 您还可以指定测试属性,如下所示:

    [Test]
    [ExpectedException(ExpectedException = typeof(InvalidOperationException), ExpectedMessage = "Somethings not right")]
    public void Test_SomeMethond()
    {
        something.SomeMehthod();
    }
    
        4
  •  0
  •   Rob    16 年前

    按位与

    :

      try
      {
        command.DoWork();
        Assert.Fail("ArgumentException Expected");
      }
      catch (ArgumentException e)
      {
        Assert.AreEqual("Expected Message", e.Message);
      }