当实际值和期望值匹配时,什么情况下AssertEquals会失败?

问题描述 投票:0回答:1

我有一个Android应用程序的测试用例,当用户快进并将视频后退15秒时,该视频案例可验证视频播放器活动中的时间没有变化。测试工作如下:

  1. 打开视频播放器,让视频播放几秒钟。
  2. 暂停视频并检查时间戳。
  3. 按“快进15秒”按钮,然后按“快退15秒”按钮。
  4. 检查新时间戳是否相同。

时间戳为hh:mm:ss格式。我使用以下方法获取播放时间(以秒为单位):

    private int getPlayTime() {
        String timestamp = getTimestamp();
        return Integer.parseInt(timestamp.substring(0, 2)) * 3600 +
                Integer.parseInt(timestamp.substring(3, 5)) * 60 +
                Integer.parseInt(timestamp.substring(6)) ;
    }

getTimestamp()从Android视图获取时间戳字符串:

    private String getTimestamp() {
        AppCompatTextView playTime = (AppCompatTextView) solo.getView(/* View ID */);
        return (String) playTime.getText();
    }

这是assert语句:

assertEquals("Rewinding should bring us back 15 seconds. Start = " + startTime + ", end = " + endTime, startTime, endTime);

尽管值相同,但AssertEquals()有时会返回失败:java.lang.AssertionError: Time should advance by 15 seconds. Start = 37, end = 37

这种情况发生的时间少于10%,并且不容易重现。我完全迷失了解释。这可能是JUnit错误吗?

java junit4 android-testing
1个回答
1
投票

您的断言似乎来自于其他测试用例,根据您的描述,单击前进按钮时触发。

© www.soinside.com 2019 - 2024. All rights reserved.