Android猴子测试选择一个特定的活动



我使用Android monkey测试来测试我的Android应用程序,它适用于我的应用程序,并且非常酷。但我想测试具体的应用程序活动,我怎么能做到这一点?

今天我测试了所有的应用程序:

$ adb shell monkey -p my.package -c android.intent.category.HOME -c android.intent.category.DEFAULT -v 500 -s "a random number"

与Android猴子测试我不能测试一个特定的活动,但与Android猴子跑者我可以做python脚本来模拟猴子测试,所以我做了一个python脚本打开我的活动和初始化猴子测试:)

#! /usr/bin/env monkeyrunner
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from random import randint
print "get device"
device = MonkeyRunner.waitForConnection()
package = 'my.packaget'
activity = 'my.package.activity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
#use commands like device.touch and device.drag to simulate a navigation and open my activity
#with your activity opened start your monkey test
print "start monkey test"
for i in range(1, 1000):
    #here i go emulate only simple touchs, but i can emulate swiper keyevents and more... :D
    device.touch(randint(0, 1000), randint(0, 800), 'DOWN_AND_UP')
print "end monkey test"

保存test .py并运行

$ monkeyrunner teste.py

这对我很有效。在清单中添加category:

<activity android:name="MonkeyActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.MONKEY" />
    </intent-filter>
</activity>

MonkeyActivity将执行初始化设置,用于测试和从shell:

adb shell monkey -p my.package -c android.intent.category.MONKEY -v 500

From the docs:

-c如果以这种方式指定一个或多个类别,Monkey将只允许系统访问列出的活动使用指定的类别之一。如果你没有指定类别,Monkey将选择与类别一起列出的活动意图。CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。指定多个类别,使用-c选项多次-一个-c选项每一类。

所以你从命令中删除了DEFAULT和LAUNCHER类别,将MONKEY添加到你想要在清单中测试的活动中,命令现在很简单:

$ adb shell monkey -p my.package -c -v 500 -s "a random number"

对于我来说,刚刚工作过:

-c android.intent.category.LAUNCHER

根据我的清单标准类别条目:

<activity
                android:name="pl.com.infinitysoftware.carassistant.app.CarAssistantMainActivity"
                android:label="@string/app_name"
                android:launchMode="singleTask"
                android:configChanges="orientation|screenSize">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
</activity>

相关内容

  • 没有找到相关文章

最新更新