java Annotation注解

本文通过Java代码展示了如何使用注解实现测试用例,并解析了不同测试用例的执行结果,包括通过测试、失败测试及无效的测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.lang.annotation.*;
import java.lang.reflect.*;

public class Annotation {

	public static void main(String[] args) {
		int tests = 0;
		int passed = 0;
		Class<?> testClass = AnnotationTest.class;
		for (Method m : testClass.getDeclaredMethods()) {
			if (m.isAnnotationPresent(Test.class)) {
				tests++;
				try {
					System.out.println(m + " @Test(" + m.getAnnotation(Test.class).value() + "): ");
					m.invoke(null);
					passed++;
				} catch (InvocationTargetException wrappedExc) {
					Throwable exc = wrappedExc.getCause();
					System.out.println(m + " failed: " + exc);
				} catch (Exception exc) {
					System.out.println("INVALID @Test: " + m);
				}
			}
		}
		System.out.printf("Passed: %d, Failed: %d%n", passed, tests - passed);
	}

}

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface Test {
	String value() default "default";
}

class AnnotationTest {
	@Test("chenzq") public static void m1() { } 	// Test should pass
	@Test("jaeson") public static void m2() { 	// Test Should fail
		throw new RuntimeException("Boom");
	}
	@Test public void m5() { } 			// INVALID USE: nonstatic method
}

 输出为:

public static void com.jaeson.AnnotationTest.m1() @Test(chenzq):
public static void com.jaeson.AnnotationTest.m2() @Test(jaeson):
public static void com.jaeson.AnnotationTest.m2() failed: java.lang.RuntimeException: Boom
public void com.jaeson.AnnotationTest.m5() @Test(default):
INVALID @Test: public void com.jaeson.AnnotationTest.m5()
Passed: 1, Failed: 2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值