Junit测试空方法

时间:2017-02-08 00:30:38

标签: java unit-testing testing

我有一个名为NullMetricsPublisher的类,里面有几个方法,例如其中一个void publish()。由于类名已经表明该类应该什么都不做。 void publish()方法基本上是空的。

void publish() {
    // do nothing in this method
}

但是,我们确实想对它进行单元测试,确保方法内部没有任何逻辑。想知道有谁知道如何在Java中测试类的空方法吗?

注意 :为什么我们首先要NullMetricsPublisher?我们还有另一个名为MetricsPublisher的类,它将度量标准发布到我们的度量服务。但是,在某些情况下,我们根本不想发布指标。现有界面必须Publisher,因此,现在我们只添加了NullMetricsPublisher类来实现Publisher

2 个答案:

答案 0 :(得分:2)

您无法测试方法对单元测试无效。为了测试这个,你需要检查是否会发生任何可能发生的事情。可能会发生无穷无尽的事情。因此,不可能为此编写单元测试。

您唯一可以测试的是特定的操作不会发生,例如NullMetricsPublisher不会发送MetricsPublisher等消息。

答案 1 :(得分:0)

使用dependency injection时,您可以验证:

  1. 没有更改内部状态。
  2. 不会调用任何依赖项。
  3. 这将有效地使任何方法做无操作。有多种方法可以验证第1点:手动检查状态,在对象之前和之后序列化对象等。点2可以简单地通过传入任何调用的依赖项来解决。

    如果您有一些静态全局类,例如Environment.getConnection().publish()或未使用DI,则此解决方案会崩溃。