Java之------JUnit(二)

自制JUnit

上一篇JUnit的博客里面讲了关于它的使用方法,这一片就来自制一个JUnit看看吧

关于MyEclipse里面的JUnit是已经嵌入到了系统中的,我们无法完全实现JUnit的功能,但基本的还是可以实现。


首先,需要写一个注解MyTest(Annotation关于注解详情请见本博客“Java之------注解(Annotation)”点击打开链接):

package cn.hncu.myJUnit;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyTest {
}
再来写一个MyJUnit(这个就相当于系统运行加了@MyTest注解的方法的操作):

package cn.hncu.myJUnit;

import java.lang.reflect.Method;
import java.util.Scanner;

public class MyJUnit {
	
	public static void main(String[] args) throws Exception {
		Scanner input=new Scanner(System.in);
		System.out.println("请输入要被测试的类名");
		String className=input.nextLine();
		
		Class c=Class.forName(className);
		Object obj=c.newInstance();
		
		Method methods[]=c.getDeclaredMethods();
		for (Method m:methods){
			boolean boo=m.isAnnotationPresent(MyTest.class);
			System.out.println(m.getName()+"是否存在注解:"+boo);
			if (boo){
				m.invoke(obj, null);
			}
		}
	}
}
接下来就可以使用了,可以将@MyTest注解加到需要测试的方法上,只是不能像加了@Test那样运行,需要在MyJUnit中手动输入要测试的类的名字,进而搜索出该方法执行。

下面写一个类给其中的一个方法加上@MyTest注解:

package cn.hncu.myJUnit;

public class A {
	
	public void aa(){
		System.out.println("aa......");
	}
	
	@MyTest
	public void bb(){
		System.out.println("bb......");
	}
	
	public void cc(){
		System.out.println("cc......");
	}
}
然后到MyJUnit中输入A类的完整类名,即加上包名,本例为:cn.hncu.myJUnit.A

运行结果为:

Java之------JUnit(二)_第1张图片

本例的目的在于学习JUnit的内部本质实现,深入了解JUnit,为了学习技术这种是有必要掌握的


你可能感兴趣的:(java,编程语言,软件测试,JUnit,结构)