二、 测试校验框架
因为论坛应用程序中使用了前面创建的校验框架,所以需要对它进行单元测试,就像该论坛应用程序中的任何其它部分一样。你可以下载本文相应的工程源码,其中即包括了本文所创建的校验器。此外,这个方案还包括了一个针对该校验器的测试工程。该测试工程中包括了33个测试,用于验证针对不同的表单域值校验器都能够正确工作
例如,列表5中的测试类包含了所有针对校验器LengthValidator的单元测试。其中,这个LengthValidator校验器分别使用一个空字符串、一个超过最大长度的字符串、一个等于最大长度的字符串和一个小于最大长度的字符串进行相应的字段校验。
列表5–LengthValidatorTests.cs
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MvcValidation;
namespace MvcValidationTests
{
[TestClass]
public class LengthValidatorTests
{
[TestMethod]
public void LengthValidatorEmptyIsValid()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate(String.Empty);
// Assert
Assert.IsTrue(result);
}
[TestMethod]
public void LengthValidatorOverMaximum()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate("abc");
// Assert
Assert.IsFalse(result);
}
[TestMethod]
public void LengthValidatorEqualMaximum()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate("ab");
// Assert
Assert.IsTrue(result);
}
[TestMethod]
public void LengthValidatorUnderMaximum()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate("a");
// Assert
Assert.IsTrue(result);
}
}
}
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MvcValidation;
namespace MvcValidationTests
{
[TestClass]
public class LengthValidatorTests
{
[TestMethod]
public void LengthValidatorEmptyIsValid()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate(String.Empty);
// Assert
Assert.IsTrue(result);
}
[TestMethod]
public void LengthValidatorOverMaximum()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate("abc");
// Assert
Assert.IsFalse(result);
}
[TestMethod]
public void LengthValidatorEqualMaximum()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate("ab");
// Assert
Assert.IsTrue(result);
}
[TestMethod]
public void LengthValidatorUnderMaximum()
{
// Arrange
var validator = new LengthValidatorAttribute(2);
// Act
var result = validator.Validate("a");
// Assert
Assert.IsTrue(result);
}
}
}