t0s*_*t0s 23 android android-testing android-espresso
我有一个使用Realm db的测验应用程序.每次用户选择答案时,她都会单击一个按钮,并显示问题的新文本.多数民众赞成,直到她到达我开始新活动的最后,并根据正确答案显示分数.
我应该如何开始/测试(使用Espresso我猜)该活动,而不必每次所有答案都手动输入并在每次回答后点击按钮,直到我到达最后一个?
我需要的是将一些模拟数据传递给变量并制作一个Intent,但我不知道如何在Espresso中找不到与此相关的任何内容
chi*_*uki 54
您可以使用以下自定义意图启动下一个活动:
@RunWith(AndroidJUnit4.class)
public class NextActivityTest {
@Rule
public ActivityTestRule<NextActivity> activityRule
= new ActivityTestRule<>(
NextActivity.class,
true, // initialTouchMode
false); // launchActivity. False to customize the intent
@Test
public void intent() {
Intent intent = new Intent();
intent.putExtra("your_key", "your_value");
activityRule.launchActivity(intent);
// Continue with your test
}
}
Run Code Online (Sandbox Code Playgroud)
完整示例:https://github.com/chiuki/android-test-demo
博客文章:http://blog.sqisland.com/2015/04/espresso-21-activitytestrule.html
对于使用 AndroidX 进行测试的开发人员来说,情况有所改变。
这是一个示例 UI 测试用例,用于测试单击 textview 后我的预期活动是否打开。
import androidx.lifecycle.Lifecycle
import androidx.test.core.app.ActivityScenario
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.intent.Intents
import androidx.test.espresso.intent.Intents.intended
import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent
import androidx.test.espresso.matcher.ViewMatchers.withId
import com.softway.dhananjay.tournamentapp.tournament.TournamentActivity
import org.junit.Test
class MainActivityTest {
@Test
fun tournament_activity_starts_onClick_of_textView() {
Intents.init()
val activityScenario: ActivityScenario<MainActivity> =
ActivityScenario.launch(MainActivity::class.java)
activityScenario.moveToState(Lifecycle.State.RESUMED)
onView(withId(R.id.startTextView)).perform(ViewActions.click())
intended(hasComponent(TournamentActivity::class.java.name))
Intents.release()
activityScenario.moveToState(Lifecycle.State.DESTROYED)
}
}
Run Code Online (Sandbox Code Playgroud)
首先,看到这个问题:Android Monkey Runner
然后你可以看到这些指南:Monkey Runner
它使您可以使用Python 在源代码之外测试您的android 活动。因此,您可以触发事件并进行特定的活动,如下所示:
#! /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"
Run Code Online (Sandbox Code Playgroud)
保存然后运行:monkeyrunner test.py
| 归档时间: |
|
| 查看次数: |
24361 次 |
| 最近记录: |