自己写一个JUnit3-day1

day1
接下来,我们自己写一个能实现类似效果的小程序。
 
新建com.wangc.day1.MyUnit3.java
 
public class MyUnit3 {
 
    public static void main(String[] args) throws Exception {
        Class c = Class.forName(args[0]);//args[0]获取运行参数,假定第一个运行参数即为需要执行的测试类。并加载该类
        Object o = c.newInstance();
        Method[] methods = c.getMethods();//获取所有方法,然后遍历得到符合要求的方法,通过invoke()执行
        for(Method m :methods){
            if(isTestMethod(m)){
                m.invoke(o);
            }
        }
    }
 
    private static boolean isTestMethod(Method m){
        String methodName = m.getName();
        int modifier = m.getModifiers();
        Class returnType = m.getReturnType();
 
        if( !methodName.startsWith("test") ){
            return false; //如果不是test开头,则返回false
        }else if( 1!=modifier ){
            return false;//如果不是public的,返回false
        }else if( !returnType.equals(Void.TYPE)){
            return false;//如果方法不是void,返回false
        }else{
            return true;
        }
 
//        上面的一串if else可以简写成
//        return methodName.startsWith("test") && 1==modifier && returnType.equals(Void.TYPE);
    }
}

 

 
新建com.wangc.day1.JUnit3Demo.java
这里使用我们自己的MyUnit3来执行测试,所以没有要求必须继承某个类,仅仅对方法名有要求
public class JUnit3Demo {
 
    public void testAdd1(){
        System.out.println("this is testAdd1 with MyUnit3");
    }
 
    public void testAdd2(){
        System.out.println("this is testAdd2 with MyUnit3");
    }
 
}

 

 
然后,打开命令提示符(或Shell终端),进入src目录,然后执行编译javac
D:\workspace_HelloWorld\HelloWorld_JUnit3>javac  -encoding UTF-8 -d ./out src/com/wangc/day1/*.java

然后运行java

D:\workspace_HelloWorld\HelloWorld_JUnit3>java -classpath "./out" com.wangc.day1.MyUnit3 com.wangc.day1.JUnit3Demo

 

 
以上。
 
 
 
posted @ 2021-02-25 10:40  乌鸦不会飞  阅读(64)  评论(0)    收藏  举报