我正在Android项目的测试模块中编写测试类,特别是我正在编写一些功能测试。现在我处在一种情况,我看到我写的很多代码应该是可重用的,现在我更好地解释了这种情况。让我们考虑一个注册程序的测试类。现在我有一个SignUpTest类,它有一些测试方法和一些辅助方法,称为
reach<name-of-the-page>Page()
完成注册,直到该方法名称中的页面。此方法不进行测试,因为它们使用正确的数据填充注册过程的页面,而不执行任何类型的测试。
我的测试看起来像:
test<name-of-the-page>Page() {
reach<name-of-the-page>Page()
Some tests
}
现在我的情况是,注册测试(取决于我想测试或测试的环境)在某些方法中应该有所不同,特别是在一些覆盖方法中。在您看来,哪个类是最好的组织,避免代码冗余? 除了几种方法之外,我绝对不想用几乎相同的代码创建两个类。我读到继承不是测试用例组织的最佳实践。
答案 0 :(得分:1)
@RunWith(AndroidJUnit4.class)
public abstract class MainTest<T extends Activity> extends
ActivityInstrumentationTestCase2<T> {
public MainTest(Class<T> activityClass) {
super(activityClass);
}
@Before
protected void setUp() {
super.setUp();
}
//put methods you are going to reuse in your test classes here
@After
public void tearDown() {
super.tearDown();
}
}
然后只需在测试类中扩展MainTest.java
:
@RunWith(AndroidJUnit4.class)
public class TestLogin extends MainTest<LoginActivity> {
public TestLogin() throws ClassNotFoundException {
super(LoginActivity.class);
}
@Before
public void setUp() throws Exception{
super.setUp();
}
@Test
public void testLoginUser(){
//do your test reuse methods from MainTest class
}
@After
public void tearDown() {
super.tearDown();
}
}
祝你好运。