是否有可能为Android编写复杂的功能测试?

时间:2013-02-08 09:46:40

标签: android junit functional-testing android-testing

有可能有这样的东西吗?使用Android / Robotium测试框架或任何其他解决方案

public void testAll() throws Exception {
    test_001_LoginActivity();
    test_002_MainActivity();
}

public void test_001_LoginActivity() throws Exception {
    startActivity();
    test_001_LoginActivity_001_emptyUsername();
    test_001_LoginActivity_002_emptyPassword();
    test_001_LoginActivity_003_incorrectValues();
    test_001_LoginActivity_004_correctValues(); // MainActivity is opened on success
}

public void test_002_MainActivity() throws Exception {
    test_002_MainActivity_001_profile();
    test_002_MainActivity_002_list();
    test_002_MainActivity_003_logout();
}

我们的想法是让test_001_LoginActivity()test_002_MainActivity()包含所有相应的活动测试,而无需重新创建活动。并将结果显示如下:

test_001_LoginActivity() - OK
--->test_001_LoginActivity_001_emptyUsername() - OK
--->test_001_LoginActivity_002_emptyPassword() - OK
--->test_001_LoginActivity_003_incorrectValues() - OK
--->test_001_LoginActivity_004_correctValues() - OK

test_002_MainActivity() - NOK
--->test_002_MainActivity_001_profile() - OK
--->test_002_MainActivity_002_list() - NOK
--->test_002_MainActivity_003_logout() - OK

这意味着LoginActivity的所有测试都成功通过; test_002_MainActivity_002_list()的{​​{1}}测试失败,但是MainActivity测试已通过(因为未重新创建活动)

我是测试的新手,所以也许我弄错了,测试的目的是为了一个全新的活动实例?

1 个答案:

答案 0 :(得分:0)

如果你重命名所有的test_00X_METHOD方法,你可能会尝试做什么,因为目前它会变得彻底混乱,因为在方法对jUnit Framework有特殊意义之前的“test”前缀 - 除了所有这些都将由你执行testAll()所有方法也将分别执行,因为jUnit运行带有“test”前缀的所有方法作为单独的测试用例,并且应用程序甚至在这些方法之间重新启动。因此,如果你丢弃所有“测试”前缀但保留testAll(),它应该可以正常工作。并且你不需要在test_001_Lo​​ginActivity()的开头使用“startActivity()”方法,因为Activity是自动启动的 - 哪个活动?您作为类型参数传递给此类的活动:http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html

我希望这个答案对你有用。

Krzysiek, Bitbar软件工程师