加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Scala中测试一个私有类方法?

发布时间:2020-12-16 09:38:37 所属栏目:安全 来源:网络整理
导读:我有一个私有方法的伴侣对象,像这样: package com.example.peopleclass Person(val age: Int)object Person { private def transform(p: Person): Person = new Person(p.age + 1)} 我想测试这种方法,具体如下: class PersonSpec extends FlatSpec { "A
我有一个私有方法的伴侣对象,像这样:

package com.example.people

class Person(val age: Int)

object Person {
  private def transform(p: Person): Person = new Person(p.age + 1)
}

我想测试这种方法,具体如下:

class PersonSpec extends FlatSpec {

  "A Person" should "transform correctly" in {
    val p1 = new Person(1)
    val p2 = Person.transform(p1) // doesn't compile,because transform is private!
    assert( p2 === new Person(2) )
  }

}

有任何关于测试代码访问私有方法的帮助?

实际上,正如我们所写的那样,我可能可以创建一个Person的子类,但是如果Person被声明为final或Seal

谢谢!

解决方法

单独测试私人方法的需求是一种设计气味。

您可以通过公开API来测试它们,如果它们是小而简单的帮助方法,或者更可能的是它包含不同的逻辑/责任,并且应该被移动到由Person中的委派使用的另一个类。那么您将首先测试该类的公共API。

详见related answer。

可能您可以使用Java / Scala反射访问它,但它只是设计问题的解决方法。不过,如果你需要,看一个related Java answer how to do that。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读