【发布时间】:2018-09-19 09:35:09
【问题描述】:
我已经实现了一个通用的TestBase.java 并且许多测试用例类扩展了这个基础。
@BeforeClass方法是为对应的测试用例类准备一些具体的数据。
我的问题是,是否可以在 TestBase @BeforeClass 方法中获取调用测试用例类名,以便我可以使用类名来准备正确的数据?
我不想在单独的测试用例类中实现@BeforeClass,因为步骤完全相同,唯一的区别是可以通过测试用例类名生成的数据名称。
例如: 我的项目是测试我们产品的查询功能。 测试用例类,如 GenericQueryTest.java、BooleanQueryTest.java 等。 每个测试用例类需要在运行测试之前索引准备好的数据,并在测试用例类中的所有测试完成后清理环境。
我实现了一个 TestBase.java,如下所示。
公共类 TestBase {
@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
...
}
【问题讨论】:
-
郑重声明:小心使用大量继承和 JUnit 测试用例的“幕后”设置。失败测试的目的是快速让您找到根本原因并加以解决。当您首先必须研究测试课程的“隐藏”方面时,您就违背了这个目的。含义:要非常小心地增加测试用例的复杂性,这需要读者在 了解测试用例在做什么之前转到 2、3 个不同的地方。
-
只是prepareData的常用方法。对于避免在每个测试用例类中实现相同的方法,您有什么建议?
-
该方法到底在做什么?除此之外,是的,我可能会将 BeforeClass 方法放入每个类中。您可以从那里调用其他一些静态辅助方法,将类名作为参数。但同样,您可能应该向我们展示一个代码示例,而不是提供抽象描述。鉴于当前信息,我们无法建议不同的选项。
-
澄清了我上面的问题。