Java Junit测试空方法

Java Junit测试空方法,java,unit-testing,testing,Java,Unit Testing,Testing,我有一个名为NullMetricsPublisher的类,里面有几个方法,例如其中一个void publish()。因为类名已经指示该类不应执行任何操作。void publish()方法本质上是空的 void publish() { // do nothing in this method } 但是,我们确实希望对其进行单元测试,确保方法中没有任何逻辑。想知道有人知道如何在Java中测试类的空方法吗 注意:为什么我们首先要使用NullMetricsPublisher?我们有另一个名为M

我有一个名为
NullMetricsPublisher
的类,里面有几个方法,例如其中一个
void publish()
。因为类名已经指示该类不应执行任何操作。
void publish()
方法本质上是空的

void publish() {
    // do nothing in this method
}
但是,我们确实希望对其进行单元测试,确保方法中没有任何逻辑。想知道有人知道如何在Java中测试类的空方法吗


注意:为什么我们首先要使用
NullMetricsPublisher
?我们有另一个名为
MetricsPublisher
的类,它将度量发布到我们的度量服务中。但是,在某些情况下,我们根本不想将度量发布到。现有接口必须需要一个
Publisher
,因此,现在我们刚刚添加了
NullMetricsPublisher
类来实现
Publisher

,您无法测试一个方法是否与单元测试无关。为了测试这一点,您需要检查可能发生的事情是否确实发生了。有无数的事情可能发生。因此,不可能为此编写单元测试

您唯一可以测试的是特定操作不会发生,例如
NullMetricsPublisher
不会发送类似
MetricsPublisher

的消息使用时,您可以验证:

  • 没有更改内部状态
  • 不调用依赖项
  • 这将有效地使该方法所做的任何事情都成为不可操作的。验证第1点有多种方法:手动检查状态、在调用前后序列化对象等。第2点可以通过传递引发任何调用的依赖项来简单地解决


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

    奇怪的问题…为什么奇怪?因为测试没有ops方法是奇怪的?我会说奇怪的方法*在问题中添加注释。