Consider the following type structure:
trait HasId[T] { def id: T } case class Entity(id: Long) extends HasId[Long]
Let's say we want the Entity class to be mocked in one test.
val entityMock = mock[Entity] Mockito.when(entityMock.id).thenReturn(0)
Reproduction of such test results when throwing a NullPointerException (in the second line), possibly due to scala behavior of the compiler with common primitive types (if we replace Long with String, the test runs correctly).
An exception or error caused a run to abort. java.lang.NullPointerException at com.test.Entity$MockitoMock$1085095743.id(Unknown Source) at com.test.Test.<init>(Test.scala:23) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at org.scalatest.tools.Runner$.genSuiteConfig(Runner.scala:1422) at org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$8(Runner.scala:1236)
This error only affects the case and mockito classes in versions 2.X.
Is there any known solution to solve this problem?
UPDATE: a problem occurs in versions above 2.0.8 beta
source share