是否有可能在多个测试类别中使用通用的@Before
和@After
灯具?
我已经根据模块(库存,销售,采购等)将测试(分为几类)。对于所有这些测试,用户登录是前提条件,当前我在每个课程的@Before
中拥有它。问题是当我需要更改用户ID或密码时,我需要在每个班级中进行更改。有没有一种方法可以编写可在所有测试类中使用的@Before
/ @After
?在这种情况下,测试人员是否可以派上用场?
@Before
和@After
适用于继承:
public abstract class AbstractTestCase {
@Before
public void setUp() {
// do common stuff
}
}
如果您想在每个测试用例中做特定的事情,您可以覆盖它:
public class ConcreteTestCase extends AbstractTestCase {
@Before
@Override
public void setUp() {
super.setUp();
// do specific stuff
}
}
您可以为测试套件创建@ClassRule
。每次测试都会调用它。有关之前/之后如何申请的信息,请参见ExternalResource的API和示例。
您可以在抽象父类中使用@Before
批注,如下所示:
public class TestMe extends TestParent {
@Test
public void test() {
System.out.println("Hi, here is a test. The username is: " + getUsername());
}
}
带父类:
public abstract class TestParent {
private String username;
@Before
public void setUp() {
username = "fred";
}
public String getUsername() {
return username;
}
}
我知道2个解决方案:
使用规则。您可以实施自己所需的自定义规则,然后将其添加到所需的每个测试用例中。
public class MyTest {
@Rule Rule myBeforeAfterRule = new MyTestLifecycleRule();
// your code
}
基于规则的解决方案恕我直言更加灵活,因为继承并不总是适用于所有用例。此外,您可以在一个测试用例中组合多个规则。