0

次のコードをモックする必要があります。

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

次のコード スニペットを使用して、PowerMock を使用して ManagementFactory をモックしています。

  1. クラス レベルでは、次のように構成しました。

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

  2. モック MBeanServer クラスを作成します。

    MBeanServer mockMBeanServer = createMock(MBeanServer.class);

  3. EasyMock を使用して Expetation を作成します。

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

上記のコードでは、次のエラーが発生しています。

java.lang.IllegalStateException: org.easymock.internal.MocksControl.andReturn(MocksControl.java:218) で互換性のない戻り値の型

最後に、多くのことを試した後、このクラスを無視する必要があります。

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

MBean クラスのモックとテストを除いて、私のテスト ケースは機能しています。より良いオプションはありますか?

4

1 に答える 1

0

への呼び出しを忘れたようですmockStatic()。テスト方法は次のようになります。

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

  PowerMock.mockStatic(ManagementFactory.class);

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

PowerMock には、このトピックに関する優れたドキュメントがいくつかあります

于 2013-04-17T17:00:52.080 に答える