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/