您的位置:首页 > 其它

验证小工具:检查返回的实体类中的空字段 [ 光影人像 东海陈光剑 的博客 ]

2015-01-28 15:46 113 查看
在我们做接口测试的时候通常会验证返回的实体类中的空字段。 但是如果一个个字段的assertNotNull,不仅影响其准确性,而且会延长编码时间和调试时间。

 

这里介绍一个小工具,它可以把我们频繁的assertNotNull 转变成一句话,实现更强大的功能。 希望大家可以提出宝贵意见哦!!

方法如下:

    public static String assertGetMethod(Object objectClass) {

       String str = "";

       Object[] args = new Object[0];

       Class itemClass = objectClass.getClass();

       Method[] methods = itemClass.getMethods();

       for (Method method : methods) {

           if (method.getName().startsWith("get")) {

              try {

                  Object oa = method.invoke(objectClass, args);

                  if (null != oa) {

                     System.out.println(method.getName() + ":"

                            + oa.toString());

                  }else{

                     str+=method.getName().substring(3, method.getName().length())+ ",";

                    

                  }

              } catch (IllegalArgumentException e) {

                  e.printStackTrace();

              } catch (IllegalAccessException e) {

                  e.printStackTrace();

              } catch (InvocationTargetException e) {

                  e.printStackTrace();

              }

           }

       }

 

       return ("".equals(str)) ? null : (str.substring(0,str.length()-1));

    }

这个工具是用反射法实现的,具体的实现我就不说了。主要介绍一下用法吧。

举个例子好了。

例如,这里有一个类 A

public class A {

 String a;

 String b;

 String c;

public String getA() {

    return a;

}

public void setA(String a) {

    this.a = a;

}

public String getB() {

    return b;

}

public void setB(String b) {

    this.b = b;

}

public String getC() {

    return c;

}

public void setC(String c) {

    this.c = c;

}

}

-----------------------------------------------------------------

工具说明:

public static void main(String[] args) {

       A a = new A();

       System.out.println(assertGetMethod(b));

}

打印出: A,B (为空的方法名)

 

public static void main(String[] args) {

       A b = new A();

b.setA("a");

       b.setB("b");

b.setC("c");

       System.out.println(assertGetMethod(b));

}

打印出: null

-----------------------------------------------------------------

使用说明:

我们验证的时候,如果要求所有的字段不能为空。 那么只要:

Assert.assertNull(

“以下字段值为空:n” +assertGetMethod(b)”,

assertGetMethod(b)

);

 

如果要求个别值可以为空(如B 和C可以为空),那么只要:

    public static void main(String[] args) {

       A a = new A();

       a.setA("a");

       String[] nullNames = assertGetMethod(a).split(",");

       String validName="";

       for (String string : nullNames) {

           if(!string.equals("B")

                  && !string.equals("C")){

              validName = string + ",";

           }

       }

       Assert.assertNull(

“以下字段值为空:n” + validName”,

validName

);

    }

我们从来只做一件事,分享.
让美在这个世界流转
让倍感无趣的 受伤的 彷徨的 孤独的 或是心情忧郁的 人生黯淡的人们
能有一次机会
去再一次发现这个世界的美
并把美传递给他人
---光影人像(Follow WeChat public number with interest)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: