2017-01-15 4 views
2

지난 며칠 동안 테스트 사례를 작성 중입니다. 나는 null이 아닌 제약이있는 org.mockito.Matchers.any과 같은 것을 알고 싶습니까? Mockito에 해당하는 null이 아닌 제약 조건

when(reviewBuilder.saveReviewModel(any())).thenReturn(2L); 

그런 다음 saveReviewModelnull을 포함한 모든 오브젝트를 수행 할 수 있습니다

난 당신이 말한다면 의미한다. Mockito 1.10.19 라이브러리를 사용하여 메소드에 null 객체 만 전달할 수 있습니까?

+0

그것은 Mockito 1.10.19입니다. – user3681970

답변

3

이 조건을 통과 할 사용자 지정 규칙을 작성할 수 있습니다.

class NotNullObjects extends ArgumentMatcher<Review> { 
    public boolean matches(Object object) { 
     return object!=null; 
    } 
} 

그런 다음 사용

when(reviewBuilder.saveReviewModel(argThat(new NotNullObjects()))).thenReturn(2L); 

내 하나의 조언은 당신이 당신의 방법의 입력 NA 거기 기대할 수있는 인터페이스를 생각하는 것입니다.

0

당신이 verify 메서드 호출에서 매개 변수의 예상 유형을 지정하는 경우이 작동 :

import static org.junit.Assert.fail; 

import org.junit.Rule; 
import org.junit.Test; 
import org.mockito.Mock; 
import org.mockito.Mockito; 
import org.mockito.junit.MockitoJUnit; 
import org.mockito.junit.MockitoRule; 

public class MockitoNotNullTest { 

    private static class Dependency1 { 

    } 

    private static class Dependency2 { 
     public void doesNotAcceptNull(Dependency1 d) { 

     } 
    } 

    private static class ClassUnderTest { 
     private final Dependency2 d2; 

     public ClassUnderTest(Dependency2 d2) { 
      this.d2 = d2; 
     } 

     public void passesNull() { 
      d2.doesNotAcceptNull(null); 
     } 

    } 

    @Rule 
    public MockitoRule mockitoRule = MockitoJUnit.rule(); 
    @Mock 
    Dependency2 d2; 

    @Test 
    public void passesNull_callsD1WithNull_verifyFails() { 
     ClassUnderTest classUnderTest = new ClassUnderTest(d2); 

     classUnderTest.passesNull(); 

     // fails as expected 
     Mockito.verify(d2).doesNotAcceptNull(Mockito.any(Dependency1.class)); 
    } 

} 

을하고 그 결과는 다음과 같습니다

Argument(s) are different! Wanted: 
d2.doesNotAcceptNull(
    <any stackoverflow.MockitoNotNullTest.Dependency1> 
); 
-> at stackoverflow.MockitoNotNullTest.passesNull_callsD1WithNull_verifyFails(MockitoNotNullTest.java:48) 
Actual invocation has different arguments: 
d2.doesNotAcceptNull(
    null 
); 
-> at stackoverflow.MockitoNotNullTest$ClassUnderTest.passesNull(MockitoNotNullTest.java:32) 

    // ...