那些网站可以做公司的推广,莱芜网站优化方案,网站建设公司优惠大酬宾活动,jsp网站部署怎么做前言MSTest测试项目为我们实现了断言类Assert#xff0c;用于报告代码行为的正确性#xff0c;比如#xff1a;var result Calculator.Add(1,2);
Assert.AreEqual(3, result);虽然常用的断言方法已经可以工作。但是#xff0c;我们更希望使用自定义断言#xff0c;这样可… 前言MSTest测试项目为我们实现了断言类Assert用于报告代码行为的正确性比如var result Calculator.Add(1,2);
Assert.AreEqual(3, result);虽然常用的断言方法已经可以工作。但是我们更希望使用自定义断言这样可以让我们的测试更易读。实现要为MSTest编写自定义断言我们只要为Assert类编写扩展方法。反编译Assert类的源代码可以看到断言失败是通过抛出AssertFailedException来指示测试用例失败// Microsoft.VisualStudio.TestTools.UnitTesting.Assert
using System.Globalization;internal static void HandleFail(string assertionName, string message, params object[] parameters)
{string text string.Empty;if (!string.IsNullOrEmpty(message)){text ((parameters ! null) ? string.Format(CultureInfo.CurrentCulture, ReplaceNulls(message), parameters) : ReplaceNulls(message));}throw new AssertFailedException(string.Format(CultureInfo.CurrentCulture, FrameworkMessages.AssertionFailed, new object[2] { assertionName, text }));
}我们可以依葫芦画瓢。例如实现断言IsTypeT用于验证对象是否正是给定的类型internal static class AssertExtensions
{public static void IsTypeT(this Assert assert, object obj){if (obj is T){return;}throw new AssertFailedException($Assert.That.IsType失败。不是指定的类型{typeof(T)});}
}使用Assert类提供了That属性可以获取Assert类的实例。因此只需在测试用例中用Assert.That访问扩展方法即可[TestMethod]
public void TestMethod1()
{Assert.That.IsTypeClass1(My IO);
}结论Assert.That属性好像只有MSTest测试项目提供没法为其它测试项目实现自定义断言。如果你有实现方案欢迎到公众号后台留言交流