背景
我在XUnit的github上发现了这个问题:Add Assert.Equal(expected, actual, message) overload #350 (所以一个开发人员要求添加一个不存在的重载,如下所示)
回答中引用的内容:
我们相信自文档化代码;这包括您的断言。
(因此,XUnit团队拒绝了它)
好吧,我明白了。我也相信自文档化代码。但我仍然无法找到这个用例:
示例
// Arrange
// Create some external soap service client and its wrapper classes
// Act
// client.SomeMethod();
// Assert
// Sorry, soap service's interface, behaviour and design is *given*
// So I have to check if there is no Error, and
// conveniently if there is, then I would like to see it in the assertion message
Assert.Equal(0, client.ErrorMessage.Length); // Means no error
// I would like to have the same result what would be the following *N*U*n*i*t* assert:
// Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage); // Means no error
问题
在XUnit中,如果还没有这样的重载,我该如何实现一个描述性的断言消息?
Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage);
呢? - KritnerAssert.True
或Assert.False
,它们保留了其消息重载。在下面进一步提到了“您可以为 Assert.True 和 .False 提供消息。如果您简单地无法没有消息而生活(并拒绝使用其他断言),您总是可以退回到:Assert.True(number == 2, "This is my message");” - NkosiAssert.True("所有输出都必须" == "硬编码")
失败了。我刚开始过渡到该库,并且本来可以处理这个缺陷;但是不能接受那种态度。 - shannon