如何从父类获取执行的Java子类名?
问题描述:
我正在执行Java JUnit测试。 Child
测试类扩展Parent
测试类,并且孩子自然重用Parent
类setUp()
和tearDown()
方法。在Parent
tearDown()
方法我有一个浏览器窗口截图的方法。如何从父类获取执行的Java子类名?
我想通过执行类名来命名图像。但是,我有一个问题,因为我需要在Parent
tearDown()
获得执行Child
测试类名称的知识。
这怎么办?
答
@After
public void tearDown() {
String name = getClass().getName();
// use name as filename
}
答
使用@ClassRule
创建一个新的类,如下
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
public class TestClassName extends TestWatcher{
private String name = null;
protected void starting(Description d){
name = d.getClassName();
}
public String getName(){
return name;
}
}
,并在您的父母测试用例添加以下行
@ClassRule
public static TestClassName testClassName = new TestClassName();
使用testClassName.getName()
在拆卸方法