是否可以调用既是最终方法又不受单元测试保护的方法?

Is it possible to call a method that is both final and protected from a unit test?

我有这个例子class

class Foo extends Parent {
  final override protected def test(): String = "hello world"
}

就像现在一样,我无法在我的单元测试中直接调用此方法。我正在使用 Mockito,根据我目前所读的内容,我要么需要

两种选择都不可取。有没有办法在保留签名的同时仍然公开该方法以进行单元测试?

您可以通过在测试中扩展 Foo 使 test 可间接访问,子类声明调用 test.

的 public 方法

您没有提到您使用的是哪个测试执行框架,但这里有一个使用 FlatSpec 风格的 ScalaTest 的例子:

import org.scalatest.flatspec.AnyFlatSpec

class FooSpec extends AnyFlatSpec {
  class TestingFoo extends Foo {
    def accessibleTest: String = test
  }
  it should "say hello" in {
    assert(new TestingFoo().accessibleTest == "hello world")
  }
}

总体方法与其他测试框架类似。