package demo1;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class TestDemo {
public static void main(String[] args) throws Exception, Exception{
// Class c=DemoTest.class;
//
// Object object = c.newInstance();//创建对象2中方法,可以使用构造器,也可以直接这样使用
//
// Method[] methods = c.getDeclaredMethods();
//
// for (Method method : methods) {
// //System.out.println(method);
// boolean b=method.isAnnotationPresent(MyTest.class);
// if(b) {
// method.invoke(object, null);
// }
Class c=DemoTest.class;
BufferedWriter buffer=new BufferedWriter(new FileWriter("bug.txt"));
Method[] methods = c.getDeclaredMethods();
int count=0;
for (Method method : methods) {
if(method.isAnnotationPresent(MyTest.class)) {
try {
method.invoke(c.newInstance(),null);
} catch (Exception e) {
count++;
//buffer.write(method.getName()+"方法出现bug了");
buffer.write(method.getName()+"方法出现bug了");
buffer.newLine();
//buffer.write(e.getMessage());
buffer.write("出现bug的原因是:"+e.getCause().getMessage());
buffer.newLine();
//buffer.write(e.getClass().getSimpleName());
buffer.write("出现bug的异常为:"+e.getCause().getClass().getSimpleName());
buffer.newLine();
}
}
}
buffer.write(count);
buffer.newLine();
buffer.flush();
buffer.close();
}
}
package demo1;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(value=ElementType.METHOD)
@Retention(value=RetentionPolicy.RUNTIME)
public @interface MyTest {
}
package demo1;
import org.junit.Test;
public class DemoTest {
// @Test
// public void fun1() {
// System.out.println("官方内置、。。。。。");
// }
// @MyTest
// public void fun2() {
// System.out.println("自己写的方法、。。。。。");
// }
// @MyTest
// public void fun3() {
// System.out.println("自己写的方法、。。。。。");
// }
// @MyTest
// public void fun4() {
// System.out.println("自己写的方法。。。。。");
// }
//
// public void fun5() {
// System.out.println("普通方法。。。。。。。。。");
// }
@MyTest
public void jiafa() {
System.out.println("(1+1)"+(1+1));
}
@MyTest
public void jianfa() {
System.out.println("(1-1)"+(1-1));
}
@MyTest
public void chengfa() {
System.out.println("(1*1)"+(1*1));
}
@MyTest
public void chufa() {
int b=1/0;
System.out.println("(1/1)"+(1/1));
}
@Test
public void guanfang() {
System.out.println("官方方法。。。。");
}
public void putong() {
System.out.println("普通 方法。。。。");
}
}