2013-04-16 5 views
0

мне нужно издеваться следующим кодом:PowerMock/EasyMock для JMX ManagementFactory

final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
mbs.registerMBean(testMBean, new ObjectName("testObjectName"); 

Я являюсь usign PowerMock издеваться ManagementFactory с следующим фрагментом кода:

  1. На уровне класса, я настроил:

    @ RunWith (PowerMockRunner.class) @PrepareForTest ({ManagementFactory.class})

  2. Создать Mock Класс MBeanServer:

    MBeanServer mockMBeanServer = createMock (MBeanServer.class);

  3. создать Expetation с помощью EasyMock:

    EasyMock.expect (ManagementFactory.getPlatformMBeanServer()) .andReturn (mockMBeanServer);

В коде выше, я получаю следующее сообщение об ошибке:

java.lang.IllegalStateException: incompatible return value type at org.easymock.internal.MocksControl.andReturn(MocksControl.java:218)

Наконец, после того, как попробовал много, мне нужно игнорировать этот класс:

@PowerMockIgnore({ 
    "org.apache.commons.logging.*", 
    "javax.management.*", 
}) 

Мои тестовые примеры работают , за исключением насмешек и тестирования классов MBean. Любой лучший вариант?

ответ

0

Похоже, что вы отказались от звонка до mockStatic(). Ваш метод испытаний стало бы:

@Test 
public void testMyBean() throws Exception { 
    MBeanServer mockMBeanServer = createMock(MBeanServer.class); 

    PowerMock.mockStatic(ManagementFactory.class); 

    EasyMock.expect(ManagementFactory.getPlatformMBeanServer()) 
    .andReturn(mockMBeanServer); 
    //... 
} 

PowerMock имеет много документации, охватывающей эту тему here.