gpt4 book ai didi

unit-testing - 如何在 MSpec 中使用 It 断言输出消息

转载 作者:行者123 更新时间:2023-12-03 03:43:08 26 4
gpt4 key购买 nike

我们正在使用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 起来有多难。

例如,您可以创建 ShouldBeFalseShouldBeTrue 的重载,如下所示:

[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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com