如何为'getCurrentTime()'函数编写单元测试?

时间:2011-11-25 11:29:07

标签: unit-testing

我最近有一个getter函数,它只使用特定的时间格式返回当前时间。由于它使用一些系统API返回当前时间,我想不出为此编写单元测试的方法。

有人可以就此提出建议吗?

3 个答案:

答案 0 :(得分:1)

至少你可以检查结果是否为空,如果你调用它两次,第二个结果大于第一个结果。

答案 1 :(得分:1)

您需要将System API与正在测试的系统分开。

执行此操作的一种已知方法是使用依赖注入。您将一个类注入到时间格式器中,以检索当前时间。

在单元测试中,插入一个将返回预定义值的Fake CurrentTime api,以便您可以检查TimeFormatter的结果。 当您在生产中运行时,请使用System API。

答案 2 :(得分:1)

理想的解决方案是不直接使用系统时间,而是让所有代码都使用System(假设Java,比如说)的包装器,你可以模拟出来。这可能不太可行或不容易。

更简单的方法是严格创建第二种方法来进行格式化,将时间作为参数。然后,您可以轻松彻底地测试格式。

然后在原始方法中调用传递系统时间的新方法(例如System.currentTimeMillis())并且不打算为它编写测试。在这一点上,你可以做任何事情都没有错,所以没有什么可以测试的。