我们正在使用MSpec用于之前使用过 MbUnit 后的单元测试。
我已经习惯了说
Assert.IsTrue(status, "Status should be true");
在MbUnit中,即向断言添加一条消息,如果失败则输出该消息。
我在MSpec中找不到任何相应的功能。我正在测试某些 XML 是否有效,如果失败,我想报告验证错误消息。所以我的 MSpec 代码看起来像
string message;
bool isValid = ValidateXml(myXml, out message);
isValid.ShouldBeTrue();
但是,如果 ShouldBeTrue()
失败,我希望能够将消息
添加到测试输出。
这可能吗?
最佳答案
查看 MSpec 的来源,没有。扩展方法不采用消息的字符串参数。
就要编写的代码而言,您可以自己轻松添加功能;代码位于 machine.specifications/Source/Machine.Specifications/ExtensionMethods.cs
中。不知道 build 起来有多难。
例如,您可以创建 ShouldBeFalse
和 ShouldBeTrue
的重载,如下所示:
[AssertionMethod]
public static void ShouldBeFalse([AssertionCondition(AssertionConditionType.IS_FALSE)] this bool condition, string message)
{
if (condition)
throw new SpecificationException(message);
}
[AssertionMethod]
public static void ShouldBeTrue([AssertionCondition(AssertionConditionType.IS_TRUE)] this bool condition, string message)
{
if (!condition)
throw new SpecificationException(message);
}
关于unit-testing - 如何在 MSpec 中使用 It 断言输出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485314/