我有一个 JUnit 类,用于测试我系统中的时钟。时钟有一个方法jump(long milliSeconds
,它基本上使时钟跳转到指定的时间,因此将时钟的实例字段设置为currentTime
传递给跳转方法的参数。
所以我有三个 JUnit 方法。首先,我只是测试时钟的当前时间是否为 0,因为我没有在时钟上调用任何内容。然后我只是在测试让时钟跳到指定时间一次是否正确反映在当前时间上。最后,我调用了几次跳转方法,每次跳转后我都在测试当前时间是否正确。
我遇到的问题是有时我的 JUnit 测试通过有时会失败。假设我运行上述三个 JUnit 方法一次,它通过了。没关系。然后,如果我再次运行这三个,那么第一个会失败,因为时钟的当前时间不再是 0,而是当前时间是上次测试中调用的最后一次跳转。
我对此感到困惑,因为我认为在依次执行所有三个 JUnit 方法之后,如果我再次运行测试,它就不会“记住”它做了什么。
那么这是否需要我将当前时间初始化为 0 @Before setUp()
?问题是只是有时会发生上述情况。如果我等待 5 分钟并再次运行它。它运行良好。然后,如果我立即再次运行它,我会得到同样的错误。
这可能与我将 Clock 类声明为 final 的事实有关吗?或者我已经在它上面执行了单例设计模式?