在我们做接口测试的时候通常会验证返回的实体类中的空字段。 但是如果一个个字段的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

);

    }