单元测试ValidationRules

Ale*_*ura 2 c# validation wpf xaml unit-testing

我写了一个小的ValidationRules库,并希望确保它通过了大量的综合测试.我想对它们进行单元测试,但我不确定如何对测试规则进行单元测试.我认为它类似于测试任何其他方法,但有一些我不确定的事情.

例如,我的一些验证规则具有用于通过XAML传递参数的属性.我不想提出这样做​​,因为许多人将添加验证器并构建在我的单元测试套件上.

<utils:RestrictInputTypeValidator Restriction="IntegersOnly" ValidatesOnTargetUpdated="True"/> 在此示例中,"限制"是验证规则"RestrictInputTypeValidator"的属性.

我没有找到任何关于单元测试验证的好资源,并且很乐意看一些最佳实践的例子.

Adi*_*ter 5

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

ValidationResult Validate(object value, CultureInfo cultureInfo)
Run Code Online (Sandbox Code Playgroud)

您只需在单元测试中调用此方法并检查返回的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);
Run Code Online (Sandbox Code Playgroud)