2016-05-25 3 views
0

Я новичок в EasyMock и реализую JUnits в своем проекте. Ниже мой тестовый класс, просматривая код, вы можете понять, что я здесь делаю. Я использую EasyMock 3.4.EasyMock: AssertionError - Неожиданный вызов метода: с несколькими задачами с несколькими штукатурными объектами

in short: Я пишу Junit для моего фактического метода FmrTradeConsumerImpl.onTODEvent(TodEvents todEvents).

myTestClass:

@RunWith(EasyMockRunner.class) 
public class FmrTradeConsumerImplTest extends EasyMockSupport { 

    @TestSubject 
    private FmrTradeConsumerImpl fmrTradeConsumer = new FmrTradeConsumerImpl(); 
    @Mock 
    private TradeService tradeService; 
    @Mock 
    private TradeIvTypeValidator tradeValid; 
    @Mock 
    private TodEvents todEvents; 

    private List<TradeDetails> tradesList; 
    private SecurityTradeExecution tradeEx; 
    private List<SecurityTradeExecution> securityTradeEx; 

    @Before 
    public void init() { 

     tradeService = niceMock(TradeService.class); 
     todEvents = niceMock(TodEvents.class); 
     securityTradeEx = new ArrayList<>(); 
     tradesList = new ArrayList<>(); 
     tradeEx = new SecurityTradeExecution(); 
     tradeValid = niceMock(TradeIvTypeValidator.class); 
     resetAll(); 
    } 

    @Test 
    public void onTODEvent() { 
     tradeEx.setFundNumber(Long.valueOf("2016")); 
     tradeEx.setSourceSystemCd("AIM"); 
     tradeEx.setIvType("Test"); 
     securityTradeEx.add(tradeEx); 

     expect(todEvents.getSecurityTradeExcecutions()).andReturn(securityTradeEx); 
     expect(tradeValid.isValidIvType("Test")).andReturn(true); 

     tradeService.saveTradeRecordsListAsBatch(tradesList); 
     expectLastCall().andVoid(); 

     replayAll(); 

     fmrTradeConsumer.onTODEvent(todEvents); 
    } 
} 

И я получаю ниже ошибки:

java.lang.AssertionError: 
    Unexpected method call TradeIvTypeValidator.isValidIvType("Test"): 
    at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44) 
    at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94) 
    at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:97) 
    at com.fmr.ftg.es.mas.tod.client.TradeIvTypeValidator$$EnhancerByCGLIB$$311c4357.isValidIvType(<generated>) 
    at com.fmr.ftg.es.mas.tod.client.impl.FmrTradeConsumerImpl.isValidTrade(FmrTradeConsumerImpl.java:120) 
    at com.fmr.ftg.es.mas.tod.client.impl.FmrTradeConsumerImpl.onTODEvent(FmrTradeConsumerImpl.java:67) 
    at com.fmr.ftg.es.mas.tod.client.impl.FmrTradeConsumerImplTest.onTODEvent(FmrTradeConsumerImplTest.java:78) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 

Просьба представить свои предложения, Спасибо много заранее.

ответ

0

Вместо использования аннотации @Mock для «private TradeIvTypeValidator tradeValid;» используйте «@NiceMock». Здесь NiceMock обеспечивает реализацию по умолчанию, и если вы используете «@Mock», его приложение для разработчиков должно делать то же самое

+0

Я не думаю, что аннотация @NiceMock будет доступна с EasyMock 3.4, но это можно сделать с помощью @Mock (type = MockType.NICE), и это решает мою проблему. Большое спасибо за ответ и ввод. – Yakam

+0

oh true Я упустил версию. –

0

Почему вы восстанавливаете все макеты после создания? Вы можете удалить эту строку и попробовать, если она работает

Смежные вопросы