代码之家  ›  专栏  ›  技术社区  ›  AYa

小松树易失

  •  -1
  • AYa  · 技术社区  · 6 年前

    我正在使用EasyMock为我的21点游戏编写单元测试。 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 回复  |  直到 6 年前
        1
  •  0
  •   Little Yusuf    6 年前

    您确定有类模拟所需的其他库吗?

        2
  •  0
  •   Vihar    6 年前

    很可能你们班 com.blackjack.game.cards.Card

    createNiceMock

    在这种情况下,您需要使用Powermock,查看此资源以获取更多输入 https://dzone.com/articles/mock-final-class#mock-final-class

    希望这有帮助!

    推荐文章