2015-03-01 1 views
0

У меня есть следующий класс в моем проекте, для которого я пытаюсь написать тестДразнящих вызовы методов объекта с помощью EasyMock после введения его с помощью PowerMock

Class A{ 
    a(){ 
     B b = new B(); 
     int ans = b.somefunction(); 
    } 
} 

Мне нужно издеваться SomeFunction (вызов) в выше класс для моего теста

Я попытался следующие достижения этой

@RunWith(PowerMockRunner.class) 
@PrepareForTest({A.class,B.class}) 
Class TestA{ 
    testa(){ 
     EasyMock mb = EasyMock.createMock(B.class); 
     PowerMock.createMock(B.class); 
     PowerMock.expectNew(B.class).andReturn(mb); 
     EasyMock.expect(mb.somefunction()).andReturn(0); 
     EasyMock.replay(mb); 
     PowerMock.replay(B.class); 
    } 
} 

но он всегда дает Java.lang.AssertionError: Неожиданный метод называют B.somefunction()

У меня есть PowerMock 1.5.5 и EasyMock 3,2 в моем пакете

Может кто-то помочь мне с вышеуказанной проблемой и помочь мне выяснить, где именно я неправильно. Я новичок в использовании EasyMock и PowerMock.

Существует ли более простой способ проверить данный класс.

ответ

0

Вы не выполняете тест, правильно, конструктор в тестовом классе не требуется

правильный способ будет сделать это следующим образом:

@RunWith(PowerMockRunner.class) 
@PrepareForTest({A.class,B.class}) 
class TestA{ 
    B mb=EasyMock.createNiceMock(B.class); 
    PowerMock.expectNew(B.class).andReturn(mb).anyTimes(); 
    EasyMock.expect(mb.somefunction()).andReturn(0).anyTimes(); 
    EasyMock.replay(mb); 
    PowerMock.replayAll(); 

    A a=new A(); //calling A's Constructor so that test case actually runs 
} 

надеюсь, что это помогает!

Удача

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