2011-07-26 4 views
1

私はオブジェクトを嘲笑し、いくつかのレガシーコードの単体テストを作成しようとしました。私は最初にpowermockを使い、69行目にNoClassDefFoundError(DefaultHttpClient mockClient = mock(DefaultHttpClient.class);)を見つけようとしています(以下のトレースを参照)。Powermock newbie/NoClassDefFoundErrorでApache DefaultHttpClientを嘲笑しています

誰も私に手を差し伸べて正しい方向に向けることができますか?

@RunWith(PowerMockRunner.class) 
@PrepareForTest(LoginClient.class) 
public class LoginClientTest { 
Properties props = null; 

@Before 
public void setUp() throws FileNotFoundException, IOException { 
    props = new Properties(); 
    props.load(new FileInputStream("./src/test/resources/LoginClient/default.properties")); 
} 

/** 
* Method description 
* @throws Exception 
* 
*/ 
@Test 
public void loginPositiveTest() 
     throws Exception { 

    DefaultHttpClient mockClient = mock(DefaultHttpClient.class); 
    HttpResponse mockResponse = mock(HttpResponse.class); 
    StatusLine mockStatusLine = mock(StatusLine.class); 

    Header[] headers = new BasicHeader[2]; 
    headers[0] = new BasicHeader("Set-Cookie", "COOKIE-DATA"); 
    headers[1] = new BasicHeader("Set-Cookie", "COOKIE-DATA-2"); 

    whenNew(DefaultHttpClient.class).withNoArguments().thenReturn(mockClient); 
    when(mockClient.execute(isA(HttpUriRequest.class))).thenReturn(mockResponse); 
    when(mockResponse.getStatusLine()).thenReturn(mockStatusLine); 
    when(mockStatusLine.getStatusCode()).thenReturn(HttpStatus.SC_OK); 
    when(mockResponse.getAllHeaders()).thenReturn(headers); 

    LoginClient client = new LoginClient(); 
    UsernamePasswordCredentials creds = new UsernamePasswordCredentials(props.getProperty("user"), 
              props.getProperty("password")); 

    String result = client.getCookie(creds.getUserName(), creds.getPassword()); 

    System.out.println(result); 

    assertNotNull(result); 
} 

}

java.lang.NoClassDefFoundError: org.apache.http.impl.client.DefaultHttpClient$$EnhancerByMockitoWithCGLIB$$221fdb68 
    at sun.reflect.GeneratedSerializationConstructorAccessor6.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:521) 
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:40) 
    at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:59) 
    at org.mockito.internal.creation.jmock.ClassImposterizer.createProxy(ClassImposterizer.java:111) 
    at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:51) 
    at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:100) 
    at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58) 
    at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:138) 
    at [REDACTED].clients.LoginClientTest.loginPositiveTest(LoginClientTest.java:61) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:307) 
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86) 
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:112) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:73) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) 
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) 
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102) 
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

答えて

1

問題は、Sun /オラクルJava6のにjava5(IBMのWebSphere)から変化させることによって解決されるようです。

関連する問題