c# – 如何对自定义数据注释进行单元测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何对自定义数据注释进行单元测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3010字,纯文字阅读大概需要5分钟。
内容图文
![c# – 如何对自定义数据注释进行单元测试](/upload/InfoBanner/zyjiaocheng/792/18a63c0f878c458286dea8eb098a5163.jpg)
我有以下简单的类数据注释来控制电话号码的区域:
public class PhoneAreaAttribute : ValidationAttribute, IClientValidatable
{
public const string ValidInitNumber = "0";
public const int MinLen = 2;
public const int MaxLen = 4;
public override bool IsValid(object value)
{
var area = (string)value;
if (string.IsNullOrWhiteSpace(area))
{
return true;
}
if (area.StartsWith(PhoneAreaAttribute.ValidInitNumber))
{
return false;
}
if (!Regex.IsMatch(area, @"^[\d]+$"))
{
return false;
}
if (!area.LengthBetween(PhoneAreaAttribute.MinLen, PhoneAreaAttribute.MaxLen))
{
return false;
}
return true;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
ValidationType = "phoneArea",
};
yield return rule;
}
}
我不知道这个班级的单元测试怎么样.
谢谢.
解决方法:
好的,基本上测试属性与测试任何常规类相同.我拿了你的课并减少了一点,所以我可以运行它(你创建了一些扩展方法,我不想重新创建).您可以在下面找到此类定义.
public class PhoneAreaAttribute : ValidationAttribute
{
public const string ValidInitNumber = "0";
public override bool IsValid(object value)
{
var area = (string)value;
if (string.IsNullOrEmpty(area))
{
return true;
}
if (area.StartsWith(PhoneAreaAttribute.ValidInitNumber))
{
return false;
}
return true;
}
}
事先注意:我的一些单元测试命名约定可能与你使用的命名约定不同(有几个).
现在我们将创建一个单元测试.我知道你已经有了一个测试项目,如果你没有,只需创建一个.在这个测试项目中,您将创建一个新的单元测试(Basic Unit Test),我们将其命名为PhoneAreaAttributeTest.
作为一种好的做法,我创建了一个测试初始化??程序来创建所有共享的“资源”,在本例中是PhoneAreaAttribute类的新实例.是的,您可以创建一个实例,就像您习惯使用“常规”类一样(事实上,“常规”类与属性类之间没有太大区别).
现在我们准备开始编写方法的测试.基本上你会想要处理所有可能的场景.我将在这里向您展示我的(简化)IsValid方法中可能出现的两种情况.首先,我将看看给定的对象参数是否可以被赋予一个字符串(这是第一个场景/ TestMethod).其次,我将看看是否正确处理了“IsNullOrEmpty”的路径(这是第二种情况/ TestMethod).
如您所见,它只是一个常规的单元测试.这些只是非常基础.如果您仍有疑问,我还建议您阅读一些教程.
这是PhoneAreaAttributeTest测试类:
[TestClass]
public class PhoneAreaAttributeTest
{
public PhoneAreaAttribute PhoneAreaAttribute { get; set; }
[TestInitialize]
public void PhoneAreaAttributeTest_TestInitialise()
{
PhoneAreaAttribute = new PhoneAreaAttribute();
}
[TestMethod]
[ExpectedException(typeof(InvalidCastException))]
public void PhoneAreaAttributeTest_IsValid_ThrowsInvalidCastException()
{
object objectToTest = new object();
PhoneAreaAttribute.IsValid(objectToTest);
}
[TestMethod]
public void PhoneAreaAttributeTest_IsValid_NullOrEmpty_True()
{
string nullToTest = null;
string emptoToTest = string.Empty;
var nullTestResult = PhoneAreaAttribute.IsValid(nullToTest);
var emptyTestResult = PhoneAreaAttribute.IsValid(emptoToTest);
Assert.IsTrue(nullTestResult, "Null Test should return true.");
Assert.IsTrue(emptyTestResult, "Empty Test should return true.");
}
}
内容总结
以上是互联网集市为您收集整理的c# – 如何对自定义数据注释进行单元测试全部内容,希望文章能够帮你解决c# – 如何对自定义数据注释进行单元测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。