如何在MSpec中输出带有It断言的消息

Mar*_*Pim 7 unit-testing assert mspec

之前使用过MbUnit,我们正在使用MSpec进行单元测试.

我习惯说

Assert.IsTrue(status, "Status should be true");
Run Code Online (Sandbox Code Playgroud)

在MbUnit中,即向断言添加消息,如果失败则输出该消息.

我在MSpec中找不到任何相应的功能.我正在测试一些XML验证,如果失败,我想报告验证错误消息.所以我的MSpec代码看起来像

string message;

bool isValid = ValidateXml(myXml, out message);

isValid.ShouldBeTrue();
Run Code Online (Sandbox Code Playgroud)

但是message如果ShouldBeTrue()失败,我希望能够将测试输出添加到测试输出中.

这可能吗?

Mat*_*len 6

看看MSpec的来源,没有.扩展方法不为消息采用字符串参数.

您可以根据要编写的代码自行添加功能; 代码在machine.specifications / Source / Machine.Specifications / ExtensionMethods.cs.我不知道建设有多难.

例如,您可以创建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);
}
Run Code Online (Sandbox Code Playgroud)