我应该单元测试验证码吗?这似乎不切实际

时间:2013-04-23 21:20:10

标签: unit-testing testing tdd

我正在学习测试驱动开发,我想知道在测试驾驶验证时我应该做些什么。我应该创建单元测试来测试每种可能的验证结果组合吗?在处理大型实体时,这似乎几乎是不可能的。假设我有一个具有大量属性的模型实体,其中一些具有约束,如下所示 -

@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 :(得分:1)

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