我最近有一个getter函数,它只使用特定的时间格式返回当前时间。由于它使用一些系统API返回当前时间,我想不出为此编写单元测试的方法。
有人可以就此提出建议吗?
答案 0 :(得分:1)
至少你可以检查结果是否为空,如果你调用它两次,第二个结果大于第一个结果。
答案 1 :(得分:1)
您需要将System API与正在测试的系统分开。
执行此操作的一种已知方法是使用依赖注入。您将一个类注入到时间格式器中,以检索当前时间。
在单元测试中,插入一个将返回预定义值的Fake CurrentTime api,以便您可以检查TimeFormatter的结果。 当您在生产中运行时,请使用System API。
答案 2 :(得分:1)
理想的解决方案是不直接使用系统时间,而是让所有代码都使用System(假设Java,比如说)的包装器,你可以模拟出来。这可能不太可行或不容易。
更简单的方法是严格创建第二种方法来进行格式化,将时间作为参数。然后,您可以轻松彻底地测试格式。
然后在原始方法中调用传递系统时间的新方法(例如System.currentTimeMillis()
)并且不打算为它编写测试。在这一点上,你可以做任何事情都没有错,所以没有什么可以测试的。