测试类组织

时间:2015-03-26 08:00:47

标签: java android testing

我正在Android项目的测试模块中编写测试类,特别是我正在编写一些功能测试。现在我处在一种情况,我看到我写的很多代码应该是可重用的,现在我更好地解释了这种情况。让我们考虑一个注册程序的测试类。现在我有一个SignUpTest类,它有一些测试方法和一些辅助方法,称为

reach<name-of-the-page>Page()

完成注册,直到该方法名称中的页面。此方法不进行测试,因为它们使用正确的数据填充注册过程的页面,而不执行任何类型的测试。

我的测试看起来像:

test<name-of-the-page>Page() {
         reach<name-of-the-page>Page()
         Some tests
}

现在我的情况是,注册测试(取决于我想测试或测试的环境)在某些方法中应该有所不同,特别是在一些覆盖方法中。在您看来,哪个类是最好的组织,避免代码冗余? 除了几种方法之外,我绝对不想用几乎相同的代码创建两个类。我读到继承不是测试用例组织的最佳实践。

1 个答案:

答案 0 :(得分:1)

我有类似的情况。我正在使用Espresso for Android 2.0测试自动化框架。我做了什么 - 我创建了抽象主测试类并将可重用的方法放在其中:

    @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();
        }
    }
祝你好运。