Finding import static statements for Mockito constructs

后端 未结 3 1819
醉梦人生
醉梦人生 2021-01-30 10:05

I\'m trying to crash through the brick wall between me and Mockito. I\'ve torn my hair out over trying to get correct import static statements for Mockito stuff. You\'d

相关标签:
3条回答
  • 2021-01-30 10:27

    Here's what I've been doing to cope with the situation.

    I use global imports on a new test class.

    import static org.junit.Assert.*;
    import static org.mockito.Mockito.*;
    import static org.mockito.Matchers.*;
    

    When you are finished writing your test and need to commit, you just CTRL+SHIFT+O to organize the packages. For example, you may just be left with:

    import static org.mockito.Mockito.doThrow;
    import static org.mockito.Mockito.mock;
    import static org.mockito.Mockito.verify;
    import static org.mockito.Mockito.when;
    import static org.mockito.Matchers.anyString;
    

    This allows you to code away without getting 'stuck' trying to find the correct package to import.

    0 讨论(0)
  • 2021-01-30 10:30

    For is()

    import static org.hamcrest.CoreMatchers.*;
    

    For assertThat()

    import static org.junit.Assert.*;
    

    For when() and verify()

    import static org.mockito.Mockito.*;
    
    0 讨论(0)
  • 2021-01-30 10:41

    The problem is that static imports from Hamcrest and Mockito have similar names, but return Matchers and real values, respectively.

    One work-around is to simply copy the Hamcrest and/or Mockito classes and delete/rename the static functions so they are easier to remember and less show up in the auto complete. That's what I did.

    Also, when using mocks, I try to avoid assertThat in favor other other assertions and verify, e.g.

    assertEquals(1, 1);
    verify(someMock).someMethod(eq(1));
    

    instead of

    assertThat(1, equalTo(1));
    verify(someMock).someMethod(eq(1));
    

    If you remove the classes from your Favorites in Eclipse, and type out the long name e.g. org.hamcrest.Matchers.equalTo and do CTRL+SHIFT+M to 'Add Import' then autocomplete will only show you Hamcrest matchers, not any Mockito matchers. And you can do this the other way so long as you don't mix matchers.

    0 讨论(0)
提交回复
热议问题