джунты терпят неудачу с easymock - PullRequest
       56

джунты терпят неудачу с easymock

0 голосов
/ 30 сентября 2018

Я использую EasyMock для написания юнит-тестов для моей игры в блэкджек.Но я получаю java.lang.IllegalArgumentException: Cannot subclass final class class com.blackjack.game.cards.Card ошибку.

Хотя, я чувствую, что делаю это правильно.Вот мой тестовый класс:

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.easymock.EasyMock;
import org.easymock.EasyMockRunner;
import org.easymock.EasyMockSupport;

@RunWith(EasyMockRunner.class)
public class handTest extends EasyMockSupport{
    private Hand hand;
    private Card seven, nine, ten, jack, ace;

    @Before
    public void setUp() throws Exception
    {
        seven = EasyMock.createNiceMock(Card.class);
        EasyMock.expect(seven.getValue()).andStubReturn(7);
        EasyMock.expect(seven.toString()).andStubReturn("seven value: 7");

    }

    @Test
    public void testTotalHandValueByAddingNumbers() {
        replayAll();
        hand.addCard(seven);

        assertEquals(27, hand.getTotal());


    }
}

Я был бы рад, если бы кто-нибудь мог помочь мне выполнить это.Прошло много времени с тех пор, как я написал модульные тесты.

Редактировать: у меня есть и Objenesis, и cglib в моем классе.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

По всей вероятности, ваш класс com.blackjack.game.cards.Card является последним классом

и createNiceMock или в этом смысле EasyMock нельзя использовать для насмешки над окончательными классами.

Вам понадобится Powermockв этом случае, посмотрите на этот ресурс для получения дополнительных входных данных https://dzone.com/articles/mock-final-class#mock-final-class

Надеюсь, это поможет!

Удачи!

0 голосов
/ 30 сентября 2018

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

cglib (2.2) и Objenesis (1.2) должны быть в пути к классам для выполнения имитации классов

...