如何解决仅使用AndroidJunit4时日历测试通过
我有一个奇怪的案子。我正在运行本地测试,并在该测试中使用Calendar类。
通过@RunWith(AndroidJUnit4::class)
注释测试类时,测试通过,否则,测试将失败。
测试代码不包含任何Android环境库
这是我的课程
class MyDateUtils(private val calendar: Calendar) {
fun getDates(): Long{
calendar.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY)
return calendar.timeInMillis
}
}
这是测试用例,这个通过了
@RunWith(AndroidJUnit4::class)
class MyDateUtilsTest {
private lateinit var calendar: Calendar
private lateinit var dateUtils: MyDateUtils
@Before
fun init() {
calendar = Calendar.getInstance()
calendar.timeInMillis = 1592422768000
dateUtils = MyDateUtils(calendar)
}
@Test
fun `when get dates is called with wednesday day should return sunday of the same week`() {
val expected = 1592163568000
val actual = dateUtils.getDates()
assertEquals(expected,actual)
}
}
现在,当我删除@RunWith(AndroidJUnit4::class)
时,测试失败并显示此错误消息java.lang.AssertionError: Expected :1592163568000 Actual :1592768368000
P.S预期的行为是getDates()
方法在同一周内返回星期日。但是没有 @RunWith(AndroidJUnit4::class)
,它将在下一个星期日(下周)返回。
解决方法
这可能与使用AndroidJUnit4运行时可能更改的默认语言环境有关。
在不同的地区,一周的第一天会有所不同,这可能会使测试失败或通过,具体取决于跑步者。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。