2

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

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

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

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

4

1 回答 1

5

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

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);
于 2013-07-18T19:19:16.813 回答