单元测试验证规则



我已经编写了一个小型的ValidationRules库,并希望确保它通过大量的全面测试。我想对它们进行单元测试,但我不确定如何对验证规则进行单元测试。我认为这类似于测试任何其他方法,但有一些事情我不确定

例如,我的一些验证规则具有用于通过XAML传递参数的属性。我不想想出一个黑客来做这件事,因为很多人会添加验证器,并在我的单元测试套件上构建。

<utils:RestrictInputTypeValidator Restriction="IntegersOnly" ValidatesOnTargetUpdated="True"/>在本例中,"Restriction"是验证规则"RestrictInputTypeValidator"的属性。

我还没有找到任何关于单元测试验证的好资源,我很想看看一些最佳实践的例子。

XAML中使用的每个验证都派生自具有以下Validate重载的ValidationRule类:

ValidationResult Validate(object value, CultureInfo cultureInfo)

您可以简单地在单元测试中调用此方法,并检查返回的ValidationResult对象,该对象包含一个指示传递值是否有效的IsValid属性。

由于这是一个类似于其他类的类,您可以像往常一样在单元测试中简单地通过所需的属性:

var validator = new RestrictInputTypeValidator()
validator.Restriction = MyRestrictionEnum.IntegersOnly;
// Here for example our input is invalid.
var result = validator.Validate("My Input", MyCulture);
Assert.IsFalse(result.IsValid);

最新更新