For the following Kotlin class:
class ProductLogic(
        private val product: Product?
) {
    fun shouldShow(): Boolean {
        if (product == null) {
            return false
        }
        val version = product.version!!
        if (!Utils.isAtLeastVersionX(version.major, version.minor)) {
            return false
        }
        return true
    }
}
I am trying to write a parameterized test in Kotlin:
@RunWith(ParameterizedRobolectricTestRunner::class)
@Config(constants = BuildConfig::class, sdk = [19], packageName = "com.example")
class ProductLogicTest(
        private val product: Product?,
        private val shouldShow: Boolean
) {
    @Before
    fun setUp() {
        // doReturn(VERSION).`when`(product).version // (2) Raises a NotAMockException
    }
    @Test
    fun shouldShow() {
        assertThat(ProductLogic(product).shouldShow(), `is`(shouldShow))
    }
    companion object {
        @JvmStatic
        @Parameters(name = "{index}: {0} => {1}")
        fun data(): Collection<Array<Any?>> {
            val productMock = mock<Product>(Product::class.java)
            doReturn(VERSION).`when`(productMock).version // (1) Is not applied
            return asList(
                       arrayOf(productMock, false),
                       // ...
            )
        }
}
I want to parameterize the value of the Product#version property. When I (1) modify its value in the data() function it is not applied when running test. When I (2) try to modify its value in @Before a NotAMockException is raised:
org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to when() is not a mock!
Example of correct stubbing:
    doThrow(new RuntimeException()).when(mock).someMethod();
Please note that the example is simplified - the real ProductLogic class consists of more parameters which rectify to using a parameterized test.
 
                        
Robolectric and Mockito versions:
Also, to mock final classes, I created file
src/test/resources/mockito-extensions/org.mockito.plugins.MockMakerwith content:Classes to test:
Next test code works for me and test is passed: