c# - 单元测试验证规则

标签 c# wpf unit-testing validation xaml

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

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

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

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

最佳答案

您在 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);

关于c# - 单元测试验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17731953/

相关文章:

c# - N层架构中的单元测试

c# - 不断变化的(虚构的)金钱

c# - 如何在文本框上显示气球提示?

wpf - 应用程序无法在 Generic.xaml 中找到资源

c# - WPF - 将列表添加到树中的好方法

xcode - Developer pod 单元测试的代码覆盖率

c# - 在 Startup.ConfigureServices 方法期间访问依赖注入(inject)对象

c# - 无法将 null 分配给类型数组的匿名属性

c# - 同时进行两个异步调用后的 WCF 问题

c# - 使用 header 值对 WebAPI2 Controller 方法进行单元测试