C#,NUnit:测试ArgumentException具有正确的ParamName的明确方法

Svi*_*ish 7 c# nunit properties exception

为了测试某些东西抛出,例如ArgumentException我可以这样做:

Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog));
Run Code Online (Sandbox Code Playgroud)

如何ParamName以清晰的方式检查是否正确?还有奖金问题:或许您可能会建议不要对此进行测试?

Svi*_*ish 10

找到一个非常明确的方式(但如果有人有更好的方式,请告诉我!)

var e = Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog));
Assert.That(e.ParamName, Is.EqualTo("otherDog"));
Run Code Online (Sandbox Code Playgroud)

Facepalm ......

  • @alexm:但是当测试失败时使用它会产生一个不那么明显的消息:*预期字符串长度为4但是为7.字符串在索引0处有所不同.预期:"otherDog"但是:"somethingElse"*vs*预期:True但是是:错误*.;) (2认同)