Junit如何在parent@BeforeClass方法中获取调用类名?

Junit如何在parent@BeforeClass方法中获取调用类名?,junit,junit4,Junit,Junit4,我已经实现了一个通用的TestBase.java,许多测试用例类扩展了这个基础 @BeforeClass方法是为相应的测试用例类准备一些特定的数据 我的问题是,是否可以在TestBase@BeforeClass方法中获取调用的测试用例类名,以便我可以使用类名来准备正确的数据 我不想在单独的测试用例类中实现@BeforeClass,因为步骤完全相同,唯一的区别是可以由测试用例类名生成的数据名 例如: 我的项目是测试我们产品的查询功能。 测试用例类,如GenericQueryTest.java、Bo

我已经实现了一个通用的
TestBase.java
,许多测试用例类扩展了这个基础

@BeforeClass
方法是为相应的测试用例类准备一些特定的数据

我的问题是,是否可以在TestBase
@BeforeClass
方法中获取调用的测试用例类名,以便我可以使用类名来准备正确的数据

我不想在单独的测试用例类中实现
@BeforeClass
,因为步骤完全相同,唯一的区别是可以由测试用例类名生成的数据名

例如: 我的项目是测试我们产品的查询功能。 测试用例类,如GenericQueryTest.java、BooleanQueryTest.java等。 每个测试用例类都需要在运行测试之前索引准备好的数据,并在测试用例类中的所有测试完成后清理环境

我实现了一个TestBase.java,如下所示

公共类测试库{

@BeforeClass
public static void setUpBeforeClass() throws Exception {
    I want to get invoked test case class name here. if I get the name(eg. classname= "GenericQueryTest ")
    File testDataFile = new File("C:/users/" + classname +".csv";
    then read the "C:/users/GenericQueryTest.csv "to prepare data in env        

}
公共类GenericQueryTest扩展了TestBase{

 I donot need to implement @BeforeClass

 @Test 
 .....
 @Test
 ...

}

我找到了解决问题的方法。只需实现定制的runner。您就可以从runner获得类。

请注意:不要使用大量继承和“幕后”操作为JUnit测试用例设置。失败测试的目的是让您快速找到根本原因,并修复它。当您第一次必须研究测试类的“隐藏”方面时你正在破坏这一目的。意思是:在给你的测试用例增加复杂性时要非常小心,因为这需要读者在理解测试用例正在做什么之前,先去2,3个不同的地方。这只是准备数据的一种常用方法。你有什么建议避免在每个测试用例类中实现相同的方法?什么例子该方法到底在做什么?除此之外,是的,我可能会将BeforeClass方法放入每个类中。您可以从那里调用其他静态帮助器方法,将类名作为参数。但同样,您可能应该向我们展示一个代码示例,而不是提供抽象描述。鉴于当前信息。澄清了我上面的问题。