java - junit 和 java : testing non-public methods

标签 java unit-testing testing junit

JUnit 只会测试我的类中那些公开的方法。我如何对那些不 protected (即私有(private)的、 protected )进行junit测试?

我可以不使用 junit 来测试它们,但我想知道 junit 标准方法是什么。

最佳答案

关于单元测试的一个学派认为,您应该只能测试公共(public)方法,因为您应该只对公共(public) API 进行单元测试,并且通过这样做,您应该覆盖非公开 API 中的代码。公共(public)方法。你的旅费可能会改变;我发现有时是这样,有时不是。

话虽如此,有几种方法可以测试非公共(public)方法:

  • 您可以通过将单元测试与其正在测试的类放在同一个包中来测试 protected 和包范围的方法。这是相当普遍的做法。
  • 您可以通过创建被测类的子类来测试另一个包中单元测试的 protected 方法,该子类将您要测试的方法作为公共(public)方法覆盖,并让这些被覆盖的方法使用 super 关键字调用原始方法。通常,这个“测试子类”将是执行测试的 JUnit TestCase 类中的一个内部类。在我看来,这有点老套,但我已经做到了。

希望这会有所帮助。

关于java - junit 和 java : testing non-public methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440786/

相关文章:

java - 单独的 rmiregistry 和服务器应用程序

java - Java 方法内部调用的 Get 方法

c# - 使用 Moq 测试 View 模型构造函数参数

android - 如何使用测试绑定(bind)在 Android Studio 中运行 POJO 测试?

ruby-on-rails - 创建一个后 Controller 规范测试

Java 游戏引擎

java - 为什么 "customised Enum constructor"返回所有其他 Enum 类型的信息?

java - GWT 的各种异步设施

java - driver.wait() 抛出 IllegalMonitorStateException

linux - Shell 脚本 - 检查参数上的数字是否唯一