是否只有在 Toast 隐藏后才能完成测试? [复制]

     2023-02-24     260

关键词:

【中文标题】是否只有在 Toast 隐藏后才能完成测试? [复制]【英文标题】:Is it possilble to finish test only after Toast was hide? [duplicate] 【发布时间】:2019-05-02 12:38:57 【问题描述】:

这里是我的 Espresso 测试:

@RunWith(AndroidJUnit4::class)
class AddTraderActivityNetworkTest 
    @Rule
    @JvmField
    var addTraderIntentTestRule: IntentsTestRule<AddTraderActivity> = IntentsTestRule(AddTraderActivity::class.java)

    @Before
    fun setup() 
        mockServer = MockWebServer()
        mockServer.start(8081)
    

 @Test
    fun buttonStart_click_serverError_showToast() 
        mockServer.enqueue(MockResponse()
                .setResponseCode(500))

        onView(withId(R.id.baseTextInputEditText))
                .perform(typeText(BASE_TEST))
        onView(withId(R.id.quoteTextInputEditText))
                .perform(typeText(QUOTE_TEST))
        onView(withId(R.id.startButton))
                .perform(click())
        onView(withText(R.string.server_error)).inRoot(ToastMatcher())
                .check(matches(isDisplayed()))
    

测试buttonStart_click_serverError_showToast 成功通过。当我收到网络服务器错误时,它(测试)检查显示 Toast。不错。

但问题是测试在 Toast 被隐藏之前完成。 但是只有在buttonStart_click_serverError_showToast 的吐司被隐藏之后,我才需要开始另一个测试。 我该怎么做?

这是我的解决方案:

@RunWith(AndroidJUnit4::class)
class AddTraderActivityNetworkTest 
    private val context = InstrumentationRegistry.getInstrumentation().getContext()
    private lateinit var mockServer: MockWebServer

    private val TAG = AddTraderActivityNetworkTest::class.java.name

    @Rule
    @JvmField
    var addTraderIntentTestRule: IntentsTestRule<AddTraderActivity> = IntentsTestRule(AddTraderActivity::class.java)

    @Before
    fun setup() 
        mockServer = MockWebServer()
        mockServer.start(8081)
     

     @Test
    fun buttonStart_click_clientError_showToast() 
        //stub response
        mockServer.enqueue(MockResponse()
                .setResponseCode(400))

        onView(withId(R.id.baseTextInputEditText))
                .perform(typeText(BASE_TEST))
        onView(withId(R.id.quoteTextInputEditText))
                .perform(typeText(QUOTE_TEST))
        onView(withId(R.id.startButton))
                .perform(click())
        onView(withText(R.string.client_error)).inRoot(ToastMatcher())
                .check(matches(isDisplayed()))
         Thread.sleep(ToastUtil.LONG_DELAY_MILLS)
         


class ToastUtil 
    companion object 
        const val LONG_DELAY_MILLS= 3500L
        const val SHORT_DELAY_MILLS = 2000L
    

我使用 3500 Mills 的 sleep

【问题讨论】:

【参考方案1】:

在测试结束时添加 sleep 命令,以便浏览器有时间在完成测试之前处理 hide()。三秒钟应该可以工作。

 @Test
    fun buttonStart_click_serverError_showToast() 
        Thread.sleep(ToastUtil.LONG_DELAY)
        // stub response
        mockServer.enqueue(MockResponse()
                .setResponseCode(500))
    onView(withId(R.id.baseTextInputEditText))
            .perform(typeText(BASE_TEST))
    onView(withId(R.id.quoteTextInputEditText))
            .perform(typeText(QUOTE_TEST))
    onView(withId(R.id.startButton))
            .perform(click())
    onView(withText(R.string.server_error)).inRoot(ToastMatcher())
            .check(matches(isDisplayed()))
Thread.sleep(3000)

【讨论】:

只有在一个线程完成其他依赖方法后才能执行方法

...我们如何在Java中使用多线程编写共享方法代码,以确保只有在汽车的Wash()完成后才会调用Dry()。我想了解如何在多线程中实现这种情况。我已经尝试将代码上传到我的GitHub存储库:https://github.com/randhish79/RealTimeMultiThreadi 查看详情

允许在脚本完成运行后单击链接

...8-04-0423:35:31【问题描述】:我试图找到一种方法,让用户只有在特定功能完成运行后才能点击链接。所以在我的例子中,我有ejs模板,其中段落中有两个链接。单击第一个(“运行python”)会激活一个需要一些时间才能完成的脚... 查看详情

只有登录用户才能编辑表单

...表单。【问题讨论】:在表格中添加列,该列将跟踪数据是否正在被编辑。每次有人打开表单进行编辑或完成后提交表单时,您都可以更新标志列。【参考方案1】:可能最简单的方法是在数据库中 查看详情

WebDriver:只有在没有输入无效值的情况下,我才能测试按钮是不是可点击?

...Driver:只有在没有输入无效值的情况下,我才能测试按钮是否可点击?【发布时间】:2014-09-1123:29:32【问题描述】:我在工作中做一些UI自动化测试,但我不太确定如 查看详情

高级表单验证-如何在用户完成后在字段旁边添加复选标记?--javascript[关闭]

因此,在用户完成表单中的字段后,如何将其设置为动画的小复选标记并标记该字段已完成?另外,如果没有重新加载页面,你会怎么做呢?BasciallythisiswhatIwanttodo答案在很高的层次上,您正在查看表单验证。一旦场失去焦点,... 查看详情

ubuntu中怎么才能输入中文,只有英文输入法。。。

...言中,选择Chinese打勾   点击确定(OK),就会提示是否安装,选择安装. 完成后在默认语言(Defaultlanguage)中,选择中文(Chinese)。重启完成。在Ubuntu的中文系统中自带了中文输入法,通过Ctrl+Space可切换中英文输入法。参... 查看详情

主 Activity 完成后如何从服务中显示 Toast?

】主Activity完成后如何从服务中显示Toast?【英文标题】:HowtodisplayToastfromaServiceaftermainActivityfinishes?【发布时间】:2015-02-0602:48:11【问题描述】:更新:我不同意这是重复的-因为我正在寻找一种方法来退出主应用程序并仍然显示... 查看详情

2021软件测试用例评审

...试方案和编写测试用例,测试用例设计完成后,是否代表该测试用例已经达到要求了呢?不管从研发流程还是从软件质量控制角度来说,此时的测试用例都不能归档,必须进行测试用例评审,只有评审后的测试... 查看详情

斯威夫特:如何让我的角色在我的游戏中只有落地后才能跳跃?

】斯威夫特:如何让我的角色在我的游戏中只有落地后才能跳跃?【英文标题】:Swift:Howtomakemycharacterinmygameonlybeabletojumponcehehitstheground?【发布时间】:2017-07-2421:26:25【问题描述】:我正在开发一款游戏,让我的角色在陆地之间... 查看详情

revit是否只有构件标高在层高上才能在平面视图中选中

参考技术A不是。打开REVIT软件,新建一个建筑项目。在“立面视图”建立的标高在“平面视图”中无法显示。选择工具栏中的视图-平面视图-楼层平面,在弹出的对话框中将3F和4F楼层选中,然后点击确认。在“平面视图”中3F和4... 查看详情

赛普拉斯:失败后是不是可以完成测试

...:Cypress:Isitpossibletocompleteatestafterfailure赛普拉斯:失败后是否可以完成测试【发布时间】:2021-11-1406:13:15【问题描述】:概述我想在更新后每周自动测试我们网站的所有200个页面,看看更新是否破坏了其中任何一个页面测试用例... 查看详情

软件测试基本概念梳理

...是软件测试“验证”+“有效性确认”前者指检验软件是否正确实现SRS中定义的系统功能后者指确认开发的软件是否满足用户的真正需求软件测试和软件开发的关系瀑布模型中,测试在编码完成后进行,分为单元测试、... 查看详情

如何做到用户只有在登录时才能访问某些路由?

】如何做到用户只有在登录时才能访问某些路由?【英文标题】:Howtodothatanuserhasaccesstocertainroutesonlywhenloggedin?【发布时间】:2021-08-2815:06:37【问题描述】:我已经用谷歌登录,效果很好。其中,登录完成后,我返回一个存储在lo... 查看详情

只有在完全下载后才能播放视频?

】只有在完全下载后才能播放视频?【英文标题】:Howtoplayvideoonlywhenithaddownloadedcompletely?【发布时间】:2012-02-1201:12:25【问题描述】:我正在制作网页,该网页将在大屏幕上顺序播放来自服务器的视频。我为video标签的preload属性... 查看详情

微信jssdk怎么获取录音时间

...次使用时,微信会在这里弹出提示“网页请求录音功能,是否允许”的提示,只有用户选择允许,录音接口才能正常调用。(3)测试结果:关键步骤来了!用户录音完成后,调用语音上传和智能识别接口,即可获得将语音 查看详情

为啥只有在按回车后才能在串行连接中收到字符?

】为啥只有在按回车后才能在串行连接中收到字符?【英文标题】:Whycharactersreceivedinserialconnectiononlyafterpressingenter?为什么只有在按回车后才能在串行连接中收到字符?【发布时间】:2015-01-2815:41:19【问题描述】:我有一个简单... 查看详情

测试完成后 Xcode 继续

...多单元测试,其中测试完成,但Xcode需要另外几分钟左右才能识别出测试实际上已经完成。我知道测试已经完成,因为调试控制台中显示以下文本:TestSuite\'MultipleSelectedTe 查看详情

jmeter接口测试实战-数据传递

...,用户登录后产生令牌token,其他接口拿着这个token判断用户是否登录才能进行相关操作,当用户将商品加入购物车支付完成后,系统按照规则生成订单号,同时会在该用户的全部订单列表中查到全部订单和相应状态. 要点分析:1.login... 查看详情