Powermock `ClassNotPreparedException` пока определено` PrepareForTest` - PullRequest
0 голосов
/ 16 мая 2019

В моем тесте я хотел макетировать класс без конструктора, который, как я выяснил, для него является конечным классом;

MessageAnimation

class MessageAnimation {

    fun fadeIn(layout: View, delay: Int) {
        val showMessage = AlphaAnimation(0.0f, 1.0f)
        showMessage.fillAfter = true
        showMessage.startOffset = delay.toLong()
        showMessage.duration = 1500
        layout.startAnimation(showMessage)
    }

    fun fadeOut(view: View, delay: Int) {
        val showMessage = AlphaAnimation(1.0f, 0.0f)
        showMessage.fillAfter = true
        showMessage.startOffset = delay.toLong()
        showMessage.duration = 1500
        showMessage.start()
        view.startAnimation(showMessage)
    }

    fun moveUp(layout: LinearLayout, delay: Int) {
        val objectAnimator = ObjectAnimator.ofFloat(layout, "translationY", (-125.0).toFloat())
        objectAnimator.startDelay = delay.toLong()
        objectAnimator.duration = 1500
        objectAnimator.start()
    }

    fun moveDown(layout: LinearLayout, delay: Int) {
        val objectAnimator = ObjectAnimator.ofFloat(layout, "translationY", (-125.0).toFloat())
        objectAnimator.startDelay = delay.toLong()
        objectAnimator.duration = 1500
        objectAnimator.start()
    }

    fun moveOutOfScreen(layout: LinearLayout, delay: Int) {
        val objectAnimator = ObjectAnimator.ofFloat(layout, "translationY", (-300.0).toFloat())
        objectAnimator.startDelay = delay.toLong()
        objectAnimator.duration = 1500
        objectAnimator.start()
    }
}

В тесте я хочу издеваться над этим классом, чтобы выяснить, могу ли я использовать PowerMock для этого. Я определил, что класс должен использовать это, и я также подготовил тест, чтобы использовать его, определив это. Тем не менее, я получил ошибку за то, что не готовил этот класс до того, как его осмеяли.

Кто-нибудь знает, почему это так?

ActivityTest.kt

@RunWith(PowerMockRunner::class)
@PrepareForTest(MessageAnimation::class)
class ActivityTest {

    private val messageAnimationMock = mockStatic(MessageAnimation::class.java)
    // other code
}

Ошибка:

org.powermock.api.mockito.ClassNotPreparedException: 

[Ljava.lang.Object;@1a6d8329
The class robot.fsrt.robotguest.common.animation.MessageAnimation not prepared for test.


    at org.powermock.api.mockito.expectation.reporter.MockitoPowerMockReporter.classNotPrepared(MockitoPowerMockReporter.java:29)
    at org.powermock.api.mockito.internal.mockcreation.MockTypeValidatorFactory$DefaultMockTypeValidator.validate(MockTypeValidatorFactory.java:37)
    at org.powermock.api.mockito.internal.mockcreation.AbstractMockCreator.validateType(AbstractMockCreator.java:10)
    at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMock(DefaultMockCreator.java:49)
    at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.mock(DefaultMockCreator.java:40)
    at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:62)
    at robot.fsrt.robotguest.activities.ActivityTest.<init>(ActivityTest.kt:24)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...