2013-04-23 57 views
0

我正在学习测试驱动开发,我想知道我应该怎么做测试驾驶验证。我应该创建测试验证结果的每种可能组合的单元测试吗?在处理大型实体时,这看起来实际上是不可能的。说我有有很多的属性,一些具有约束的模型实体,如下 -我应该单元测试验证码吗?这看起来不切实际

@entity 
public class MyClass extends Model { 

    @Constraints.Required 
    @Constraints.MaxLength(20) 
    public String attribute1; 

    @Constraints.Required 
    public String attribute2; 

    public float attribute3; 

    @Constraints.Required 
    public String attribute4; 

    @Constraints.Required 
    public String attribute5; 

    @Constraints.Max(100) 
    public int attribute6; 

    @Constraints.Required 
    public String attribute7; 

    ... 
    ... 
    ... 
} 

用于验证这样一个实体所以我在写单元测试或者是毫无意义?我可以通过Validator函数运行它,并获取失败的验证数量......但是如果我对测试严格要求,我不必为所有可能的无效属性组合进行测试,这将导致创建大量数据的实例进行测试。

因此,在这种情况下,它绝对看起来毫无意义,并不意味着单元测试对于任何实体验证都毫无意义?即如果它们对于具有很多属性的实体毫无意义,那么对于只有少数属性的属性,它们也必定是毫无意义的?

回答

1

我会测试,而不是每个可能的组合,但每个属性约束。因此,创建一个有效的条目,检查是否没有失败。从违反某一特定约束的方式改变该条目中的一件事;确保该约束捕捉到它。重复每个约束。现在你知道约束条件都可以工作。

+0

换句话说,每写一个测试来锻炼每个代码分支,并且包含一个测试代码可能抛出的每个异常。在实践中,我发现不是每个开发人员都会完全测试这样的纯数据对象。这取决于您是否想要通过测试来表达要求。这是一个偏好问题。 – 2013-04-27 05:04:37