如何在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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |