java - Java 中字符串验证的单元测试

标签 java unit-testing

我想检查特定字符串的长度是否不能超过 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/

相关文章:

javascript - 使用 MozMill 测试独立 XUL 应用程序

c# - 我如何使用 Rhino Mocks 检查传递给方法的值

java - java 上的 KeyAdapter、awt、swing 运行时错误。帮助发现错误

java - 我有两个线程,我如何知道它们是否同时运行?

java - 关于 LinkedBlockingQueue 源代码的一些困惑

unit-testing - 在作为 Prop 传递的函数上调用 Jest spyOn

ios - 如何单独对应用程序中的任何 ViewController 进行 UI 测试

c# - 使用依赖注入(inject)对 Azure Functions 进行单元测试

java - 如何在java图形上使用 boolean 值使砖 block 消失?

java - 我在ubuntu中使用maven,.java,sts eclipse和selenium ide,svn和web驱动程序