Scala 使用PrivateMethodTester测试当前方法
我试图使用Scala 使用PrivateMethodTester测试当前方法,scala,unit-testing,scalatest,Scala,Unit Testing,Scalatest,我试图使用PrivateMethodTester测试一个curried私有方法(实际上是函数),但无法确定如何调用它 考虑以下curried方法: 下面给出了编译错误 assert(9, MyObject.invokePrivate(PrivateMethod[Int]('curriedAdder)(2)(7))) .. [error] /path/to/MyObject.scala:76:80: org.scalatest.PrivateMethodTester.Invocation[In
PrivateMethodTester
测试一个curried私有方法(实际上是函数),但无法确定如何调用它
考虑以下curried方法:
下面给出了编译错误
assert(9, MyObject.invokePrivate(PrivateMethod[Int]('curriedAdder)(2)(7)))
..
[error] /path/to/MyObject.scala:76:80: org.scalatest.PrivateMethodTester.Invocation[Int] does not take parameters
[error] assert(9, MyObject.invokePrivate(PrivateMethod[Int]('curriedAdder)(2)(7)))
[error] ^
..
而这个没有找到函数
assert(9, MyObject.invokePrivate(PrivateMethod[Int => Int]('curriedAdder)(2))(7))
..
[info] - my-test-name *** FAILED ***
[info] java.lang.IllegalArgumentException: Can't find a private method named: curriedAdder
[info] at org.scalatest.PrivateMethodTester$Invoker.invokePrivate(PrivateMethodTester.scala:247)
..
- 是否可以使用
测试当前的私有方法PrivateMethodTester
- 如果是,我错在哪里
框架版本:
“org.scalatest”%%“scalatest”%%“3.0.3”%Test
scalaVersion:=“2.11.11”
sbt.version=1.0.3
- 以下内容对我使用ScalaTest 3.0.1很有用:
val curriedAdder = PrivateMethod[Int]('curriedAdder)
val actualResult = (MyObject invokePrivate curriedAdder(2, 7))
assert(9 == actualResult)
根据:
私有方法是通过反射动态调用的
当我听到我想到的反射时,调用MyObject.getClass.getDeclaredMethods.foreach(println)
该方法显示为
private int example.HelloSpec$MyObject$.curriedAdder(int,int)
所以curriedAdder(int,int)
对我来说是一个如何调用这个curried方法的提示
private int example.HelloSpec$MyObject$.curriedAdder(int,int)