我想检查特定字符串的长度是否不能超过 5 个字符、以字母“S”开头且全部大写。 (这只是一个例子)
想象一下,您将这种行为乘以对象上的 20 个字段。
我想编写一个单元测试,说明 if_all_the_fields_are_ Correct_validation_should_return_true();
我的问题是:
我应该这样做吗?
如果是,断言可能是数千个,因为可能存在多种可能性。在这种情况下应该做什么?
我将单独测试每个字段,但我也更喜欢立即获得所有字段的结果。
更新:
我的重点不在于字符串验证的方法。那已经做好了。
我的问题是:
- 我需要验证几个字段,当这些字段通过验证时,最终结果就可以了。
让我们举一个简单的例子。
例如,我有一个名为 MyValid 的对象。其中有一个字符串、一个整数和一个日期。
在 ValidationOfMyValid 类上,我有一个名为 isValid(String a, Integer b, Date c); 的方法;
需要完成的断言示例:
if_all_the_fields_on_My_Valid_is_Right(){
assertThat(this.myValid.isValid("STACK", 12, "20081205")).isTrue();
assertThat(this.myValid.isValid("STACK", "integer", "20081205")).isFalse();
assertThat(this.myValid.isValid("stack", "ee", "20081205")).isFalse();
}
如您所见,有数百种可能性。这种情况应该怎么办?
最佳答案
您可以在测试用例中使用反射。这是一种黑客攻击:
Class aClass = MyPOJO.class ...//obtain class object
Field[] fields = aClass.getFields();
for(Field field: fields){
if(field.getType() instanceof String){
// Use whatever regex you have for assertions
}
}
关于java - Java 中字符串验证的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49649452/