У меня есть тестовый пример для приложения Android, которое проверяет, что время в активности видеопроигрывателя не изменяется при быстрой перемотке пользователя вперед и перемотке видео на 15 секунд назад. Тест работает следующим образом:
- Откройте видеопроигрыватель и дайте видео воспроизвести несколько секунд.
- Приостановите воспроизведение видео и проверьте метку времени.
- Нажмите кнопка «ускоренная перемотка вперед на 15 секунд», а затем кнопка «перемотка на 15 секунд».
- Проверьте, совпадает ли новая отметка времени.
Отметка времени указана в формате чч: мм: формат сс. Я использую следующий метод для получения времени воспроизведения в секундах:
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();
}
А вот утверждение утверждение:
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?