我有一个我在超类中调用的方法,如下所示:
public class superClass {
@Before
void createDriver(){
driverFactory = new FirefoxDriverFactory();
}
...
}
但是,在我的测试套件中,特别是继承自超类的测试套件,我想要它,以便我可以使用@BeforeClass
注释而不是@Before
注释来运行我的测试。我不确定,但是否可以覆盖@Before
注释?我尝试了以下方法:
public class derivedClass extends superClass{
@Override
@BeforeClass
void createDriver(){
driverFactory = new FirefoxDriverFactory();
}
}
但是我收到一条错误,指出createDriver()
方法必须是静态的,我必须删除@Override
注释。是否可以覆盖注释而不是函数?我只是想知道。谢谢!
答案 0 :(得分:1)
问题不在于注释覆盖。 JUnit要求@BeforeClass方法是静态的:
public class derivedClass extends superClass{
@BeforeClass
public static void beforeClass(){
driverFactory = new FirefoxDriverFactory();
}
}
答案 1 :(得分:1)
我认为这是你可能正在寻找的......
public class superClass {
@Before
void createDriver(){
driverFactory = new FirefoxDriverFactory();
}
...
}
public class derivedClass extends superClass{
@Override
void createDriver(){
driverFactory = new FirefoxDriverFactory();
}
}
JUnit应该通过注释找到superClass.createDriver()
。但是,在derivedClass
的实例上调用此方法时,应该运行的实际方法是derivedClass.createDriver()
,因为此方法会使另一个方法重载。试一试,告诉我们。