我正在使用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。
谢谢
答案 0 :(得分:0)
您确定您还有其他用于类模拟的库吗?
cglib(2.2)和Objenesis(1.2)必须在类路径中才能执行类模拟
答案 1 :(得分:0)
您的课程com.blackjack.game.cards.Card
很有可能是最终课程
和createNiceMock
或从某种意义上说EasyMock不能用来模拟最终的类。
在这种情况下,您将需要使用Powermock,查看此资源以获取更多输入https://dzone.com/articles/mock-final-class#mock-final-class
希望这会有所帮助!
祝你好运!