有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

junit如何从父类获取执行的Java子类名称?

我正在执行一个JavaJUnit测试Child测试类扩展了Parent测试类,子类自然地重新使用ParentsetUp()tearDown()方法。在Parent{}方法中,我有一个方法,它获取浏览器窗口的屏幕截图

我想用正在执行的类名来命名映像。但是,我有一个问题,因为我需要在Parent{}中了解正在执行的Child测试类名

如何做到这一点


共 (2) 个答案

  1. # 1 楼答案

    使用@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()

  2. # 2 楼答案

    @After
    public void tearDown() {
      String name = getClass().getName();
      // use name as filename
    }