2014-12-15 3 views
1

PowerMock을 사용하여 wait() 메서드 호출을 피하려고합니다. 아래 코드를 시도했지만 성공하지 못했습니다 (닫을 수 있습니까?). 누구든지 도와 줄 수 있습니까?PowerMock을 사용하여 wait() 메서드를 피할 때 IllegalMonitorStateException

java.lang.IllegalMonitorStateException 
    at java.lang.Object.wait(Native Method) 
    at java.lang.Object.wait(Object.java:503) 
+0

@Duncan 위의 코드를 편집했습니다. – bsferreira

+0

현재 문제를 재현 할 수 없기 때문에 "재현 할 수 없습니다"라는 이유로 질문을 마감하도록 투표했습니다. –

답변

1

Your code 나를 위해 NullPointerException이 발생합니다 :

@RunWith(PowerMockRunner.class) 
@PrepareForTest(Bar.class) 
public class MyTest { 

    @Test 
    public void test() throws InterruptedException{ 
     Foo foo = new Foo(); 
     Foo fooSpy = PowerMockito.spy(foo); 

     Bar barMock = PowerMockito.mock(Bar.class); 
     PowerMockito.doReturn(barMock).when(fooSpy).getBar(); 
     PowerMockito.doNothing().when(barMock).wait(); 

     fooSpy.makeBarWait(); 
    } 
} 

public class Bar{} 

public class Foo { 

    private Bar bar; 

    public Bar getBar() { 
     return bar; 
    } 

    public void makeBarWait() throws InterruptedException { 
     // do something... 
     synchronized (this) {    
      getBar().wait(); 
     } 
    } 
} 

은 내가이 오류를 받고 있어요 때문에 여전히 호출되는 방법을 생각한다. 당신은 당신이에 염탐 한 개체에 makeBarWait()를 호출해야합니다

@Test 
public void test() throws InterruptedException { 
    Foo foo = new Foo(); 
    Foo fooSpy = PowerMockito.spy(foo); 

    Bar barMock = PowerMockito.mock(Bar.class); 
    PowerMockito.doReturn(barMock).when(fooSpy).getBar(); 
    PowerMockito.doNothing().when(barMock).wait(); 

    fooSpy.makeBarWait(); // <----- 
} 

테스트는 나를 위해 전달합니다.

+0

@ 루카스 PowerMock, Mockito 및 JUnit의 버전은 무엇입니까? –

+0

' 1.6.0'및' 4.11' – bsferreira

+0

@ 루카스 여기에 있습니다. 나는 당신의 문제를 재현 할 수 없다. 여기에 게시 한 코드와 정확히 똑같은 코드를 테스트하고 있습니까? 방금'Bar '에 대해 완전히 빈 클래스를 사용했습니다. –

관련 문제