gpt4 book ai didi

java - 单元测试私有(private)内部类方法

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:45 26 4
gpt4 key购买 nike

我有一个 A 类,它有一个由 B 类表示的内部缓存。这个内部类是私有(private)的,因为缓存不需要对外部消费者可见,只是为了协助外部类 A。我正在使用 Jmock 和 Java

public class A {
...
private class B {
...
public void testMethod() {
//The method I want to unit test
...
}
}
}

如上所示。我不确定如何对来自私有(private)内部类 B 的 testMethod() 进行单元测试(因为外部世界看不到类 B)。

请指教!

谢谢!

最佳答案

since the cache need not be visible to external consumers

单元测试是外部消费者。它是一个调用被测对象功能的类,就像任何其他类一样。

警告:关于这个问题有很多意见和争论。我在这里展示的不是“唯一正确的答案”,而是基于我自己在代码中维护单元测试的经验。

不要直接对私有(private)成员进行单元测试。它不仅通常需要一些技巧才能实现,而且还会在类之间创建耦合。 (测试类和被测试类。)暴露内部结构并与它们耦合是违反面向对象原则的。

与其根据您在类上调用的方法来考虑您的测试,不如根据您在单元上调用的功能来考虑您的测试。该单元公开的任何功能都是应该测试的。

这导致了一些结论:

  • 如果没有在内部调用相关私有(private)成员的公共(public)功能,那么为什么会有这些私有(private)成员呢?只需删除它们即可。
  • 如果私有(private)功能非常复杂并且很难仅使用公共(public)功能调用/验证,那么可能需要进行一些重构以简化类。

由于使用对象的代码只能调用公共(public)功能,因此测试对象的代码应该只验证公共(public)功能。

关于java - 单元测试私有(private)内部类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31101180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com