2

私は ValidationRules の小さなライブラリを作成しましたが、それが多数の包括的なテストに合格することを確認したいと考えています。それらを単体テストしたいのですが、検証ルールを単体テストする方法が正確にはわかりません。他の方法をテストするのと似ていると思いますが、よくわからないことがいくつかあります。

たとえば、いくつかの検証規則には、XAML を介してパラメーターを渡すために使用するプロパティがあります。多くの人がバリデーターを追加し、私の単体テストスイートに基づいて構築するため、これを行うためのハックを思い付きたくありません。

<utils:RestrictInputTypeValidator Restriction="IntegersOnly" ValidatesOnTargetUpdated="True"/>この例では、「Restriction」は検証ルール「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 に答える