最近我试图建立一个像TestNG这样的框架,但却发现了Launcher的事情(我不知道它是Launcher问题还是其他只是猜测)。所以这就是我所做的。
testng
时,我们可以选择将该方法/类作为 TestNG 运行。 *注意:我知道如果我们使用注释,我们不需要XML文件。但是对于简化的事情,我稍后会从XML获取类名,我将丢弃XML。
先谢谢。
这是我的测试Annoatation
package com.annoatation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(value=ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}
这是我使用Annaotation的课程:
package com.annoatation;
public class TestExample{
@Test
public void sampleMethod()
{
System.out.println("This is sample method");
}
@Test
public void sampleMethod1()
{
System.out.println("This is sample method 1");
}
}
这是我的主要班级:
package com.annoatation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
TestExample example=new TestExample();
Method[] method=example.getClass().getMethods();
for(Method methods:method)
{
Test test=methods.getAnnotation(com.annoatation.Test.class);
if(test!=null)
{
try {
methods.invoke(example);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
我希望当我单击“在My TestExample类上运行”时,它应该自动调用主类的主要方法。 我不确定我们在java中说这个东西(可能是入口点)
答案 0 :(得分:0)
使用反射创建类的实例并调用带注释的方法:
Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();
Method method = classDefinition.getMethod("methodName");
method.invoke(object);